【问题标题】:how to periodically remove items from ListView?如何定期从 ListView 中删除项目?
【发布时间】:2014-10-29 17:47:43
【问题描述】:

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

每件商品都有有效期。

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

你建议我如何开发它?

我想过:

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

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

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

你有什么建议?

【问题讨论】:

    标签: java android listview layout android-listview


    【解决方案1】:

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

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

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

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

    我对您的问题的解决方案:

    当您的活动在onRseume 中创建或更好时,请检查日期并更新您的列表。当您的活动未显示时,您为什么要尝试查看日期? 如果您没有任何活动,则您没有任何 UI。

    【讨论】:

      【解决方案2】:

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

      public int getPositionForView (View view)
      

      并为已移除的项目返回 AdapterView.INVALID_POSITION

      AlarmManager 听起来不像是正确的工具,但您可以启动一个新线程,该线程会休眠一段时间,然后更改您的数据,该数据通过观察者/可观察接口通知您的适配器。但是不要忘记调用 Activity.runOnUiThread() 否则你会收到一个异常

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-27
        • 1970-01-01
        相关资源
        最近更新 更多