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();