如何定期从ListView中删除项目?

时间:2014-09-04 20:37:45

标签: java android listview layout android-listview

我有一个列表视图的活动。

每个项目都有一个到期日期。

当该日期过去时,我希望该项目从UI中消失。

您如何建议我开发它?

我想:

1)报警管理器 - 但即使只删除一个项目,查看整个列表(20+)是否有效?

2)此外 - 我将如何强制列表刷新?使数据无效 - 将导致整个列表重绘,我只想删除一个项目

3)也许是延迟。但后来我知道如何“发送”它在X mili中被触发,而不是在特定的日期(转换更麻烦,不是什么大不了的)

你会建议什么?

2 个答案:

答案 0 :(得分:0)

  

1)警报管理器 - 但是重复整个列表是否有效   (20岁以上),即使只删除一件物品也是如此?

     

2)此外 - 我将如何强制列表刷新?使数据无效    - 将导致整个列表重绘,我只想删除一个项目

     

3)也许是延迟。但后来我知道如何发送"它是   在X mili中触发,而不是在特定日期(更麻烦)   转换,不是什么大不了的事)

当您使列表无效时,并不意味着您的列表将被完全绘制,这意味着只显示7-8的可见项目取决于列表项目大小。

我对你问题的解决方案:

当您的活动在onRseume中创建或更好时,检查日期并更新您的列表。当你的活动没有显示时,你为什么试着看日期? 如果您没有任何活动,则没有任何用户界面。

答案 1 :(得分:0)

您可以为列表中的项目指定ID。这样,当列表更新时,它们的视图将不会重新创建,而只会移动到新位置。为此,你只需要覆盖

public int getPositionForView (View view)

并返回已删除项目的AdapterView.INVALID_POSITION

AlarmManager听起来不是正确的工具,但你可以启动一个新的Thread,它会休眠一段时间,然后更改你的数据,通过Observer / Observable接口通知你的适配器。但是别忘了调用Activity.runOnUiThread(),否则你会收到异常