2

我正在從適配器中刪除一個元素,並且該元素應該被刪除並在UI中刷新ListView。會發生什麼是該元素確實被從適配器中刪除,但仍然保留在列表中,直到列表被手動刷新(打開另一個片段,然後返回到List片段並繁榮!刪除的元素實際上不再在列表)。但我希望馬上刷新列表!刪除項目後ListView不更新

這裏是我使用的刪除:

    ClockAdapter myAdapter = (ClockAdapter)listView.getAdapter(); 
        Alarm myAlarm = myAdapter.getItem(selectedPosition); 
        MyAlarmManager.deleteAlarm(myAlarm); 
        myAdapter.notifyDataSetChanged(); 

歡迎任何幫助!

回答

3

您需要以及從Adapter中刪除項目。呼叫:

ClockAdapter myAdapter = (ClockAdapter)listView.getAdapter();  
//... 
Alarm myAlarm = myAdapter.getItem(selectedPosition); 
myAdapter.remove(myAlarm); 
myAdapter.notifyDataSetChanged(); 
+0

後,我看不到任何remove方法,爲我的適配器 –

1

notifyDataSetChanged() - 醫生說,

Notifies the attached observers that the underlying data has been changed and any View reflecting the data set should refresh itself. 

因此,稱這告訴傳遞給它(報警你的情況的列表)中的數據進行了修改,它應該刷新適配器。這意味着您的適配器將再次從您附加的數據結構中讀取和加載數據。

因此,爲了反映刪除的適配器,您也必須從該列表中刪除它。

假設您有一個ArrayList<Alarm> called myArrayAlarm連接到您的適配器,那麼您應該從中刪除它。

你可以打電話,

myArrayAlarm.remove(myAlarm) 
myAdapter.notifyDataSetChanged(); 

菲利普的方式也是正確的。 :)

0

刪除項目隨時添加下面兩行

  notifyDataSetChanged(); 
      notifyDataSetInvalidated();