2016-11-15 26 views
0

我有以下列表聲明:如何重新添加字符串數組到數組適配器?

final ArrayList<String> timeSlot = new ArrayList<String>(); 
list = (ListView) findViewById(R.id.listviewtime); 

我知道,如果我要添加一個字符串數組到一個新的適配器將它只是創造這樣的:

final ArrayAdapter<String> adapterTime = new ArrayAdapter<String> 
(
    this, 
    R.layout.textv, 
    timeSlot 
); 

list.setAdapter(adapterTime); 

然而,我要重新添加適配器後的項目我有這樣清除了它:

adapterTime.clear(); 
adapterTime.addAll(timeSlot); 
list.setAdapter(adapterTime); 

這似乎並沒有工作。任何人都可以給我一些建議?

編輯:

這是我想要的東西做:

if(radioA.isChecked()){ 


       if(adapterTime.getItem(adapterTime.getCount()-1).equals("20:00:00")) 
       { 
        //do nothing 
       } 
       else{ 
        adapterTime.clear(); 
        adapterTime.addAll(timeSlot); 
        adapterTime.notifyDataSetChanged(); 
       } 

我加notifychanged但它仍然一片空白。這個想法是,當我點擊一個小時,這是radioA,它會檢查它是否等於20:00:00,如果沒有,那麼它會清除並重新添加一切。

+0

如果你可以給出更多關於你在做什麼的背景(例如,你正在進行這些調用的Android方法),這可能會有所幫助,所以我們可以確定它是否可能在某個點不直觀(因此可能沒有顯示) – jwir3

+1

'adapterTime.notifyDataSetChanged()'在那裏丟失。 – Shark

+0

你不需要設置適配器eveytime。鯊魚的答案必須奏效。每當你改變項目時調用notifyDataSetChanged – uguboz

回答

0

這個問題的問題是,當我清除適配器時,字符串數組的項目也被清除。 所以我創建了另一個字符串數組來保存這個變量作爲臨時變量。清除後將其傳回原始文件。

else{ 
        adapterTime.clear(); 
        if(timeSlot.isEmpty()){ 
         for(int i = 0; i <timeSlot2.size();i++){ 
          timeSlot.add(timeSlot2.get(i).toString()); 
         } 
        } 
        adapterTime.addAll(timeSlot); 

編輯:這將創建重複結果,因爲它將適配器設置爲最終。我不知道如何避免這種情況,因爲我的代碼完全停留在自己的位置。