2017-07-08 80 views
-1

嗨stackoverflow社區,如何將Textview數組列表轉換爲哈希集?

我想通過共享首選項將文本視圖的Arraylist發送到另一個活動,所以我試圖將我的列表轉換爲HashSet。

這是不能接受的:

public List<TextView> FavDishes = new ArrayList<TextView>(); 

。 。 。 FavDishes = new ArrayList <>(); FavDishes.add(eingabe);

 **Set<String> taskSet = new HashSet<String>(FavDishes);** 
     PreferenceManager.getDefaultSharedPreferences(context) 
       .edit() 
       .putStringSet("Data", taskSet) 
       .apply(); 

它告訴我:

你會如何解決這個問題 「不能在Android部件TextView的解決構造HashSet的」?

謝謝你的時間。

+0

在第一個地方,你爲什麼要這麼做? –

+0

我的應用程序是關於一個門薩。我想要的是,用戶可以將菜餚添加到「Favorite Dishes」列表中。所以當他滾動菜單並點擊菜單時,他可以通過按鈕選擇:「添加到最喜愛的菜餚」通過「最喜歡的菜餚按鈕」鏈接到「最喜歡的菜餚」列表。在「喜歡的菜餚」活動中,他看到了已添加的菜餚。 – Marius

回答

0

迭代FavDishes數組以獲取TextView值作爲字符串並將它們存儲到數組,然後將該數組傳遞給您的任務集而不是FavDishes。

代碼將是這樣的:

List<TextView> FavDishes = new ArrayList<TextView>(); 
    FavDishes.add(fav1TV); 
    FavDishes.add(fav2TV); 
    FavDishes.add(fav3TV); 


ArrayList<String> FavDishesString = new ArrayList<String>(); 

    for (TextView FavDish : FavDishes){ 
     FavDishesString.add(FavDish.getText().toString());  
    } 

    Set<String> taskSet = new HashSet<String>(FavDishesString); 

有用的鏈接的方式來遍歷數組列表:

https://crunchify.com/how-to-iterate-through-java-list-4-way-to-iterate-through-loop/

+0

謝謝!聽起來像是一個很好的解決方案,你能否寫一些示例代碼,讓我更好地理解和實現你的建議? – Marius

+0

對不起,即將在這裏開始燒烤午餐時間,所以現在不能,但如果沒有其他人發佈,我可能會回到它。 – BusinessPlanQuickBuilder

+0

太棒了!不要着急。我試過這個if(v == save){FavDishes.add(eingabe); (int i = 0; i <4; i ++) JSONArray jsArray = new JSONArray(FavDishes); editor.putString(「jsondata」,jsArray.toString()); editor.commit(); 現在,如果我去的活動,「eingabe」TextView列表應該被添加,它返回「null」,你知道一個原因嗎? ^^享受你的燒烤! – Marius