android - 不刷新 UI 的 notifyDataSetChanged()?

标签 android listview notifydatasetchanged

有没有一种方法可以在自定义适配器上调用 notifyDataSetChanged() 而无需刷新列表或干扰 UI?

我有一个 ListView,它后面有一个自定义适配器,使用 Guest 对象列表作为其数据集。当客人通过点击他的名字来标记他的出席时,一个勾号应该会出现在用户界面中客人的名字旁边。我可以做到这一点,但是当我调用 notifyDataSetChanged() 时,名称列表被一直推到顶部,大概是因为列表“刷新”了。

但是,如果我调用notifyDataSetChanged(),当我滚动经过更新的条目并再次滚动回来时,勾号会消失。据我所知,这是由于 ListView 对 View 的“回收”,但这肯定不会让我的工作变得更轻松。

如何调用 notifyDataSetChanged() 而不使整个 ListView 自行刷新?

最佳答案

最好在您的访客类中有一个 bool 字段:isPresent。 每当用户点击列表项时,您都可以使用 adapter.getItemAtPosition() 获取所选项目。 将值 isPresent 更新为 true。并显示刻度线。

在你的适配器类中。检查 isPresent 值。如果它被标记为 true 则显示刻度线,否则隐藏它。

这就是您实现两者的方法。在 ListItem 上显示刻度标记单击,如果您滚动 ListView 并返回到同一项目,您的刻度标记显示/隐藏将由适配器处理。

关于android - 不刷新 UI 的 notifyDataSetChanged()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17292256/

相关文章:

Android 传感器 ListView

android - 回收站 View : notify item inserted messes up the whole list

android - 如何指定 TransitionManager.beginDelayedTransition 仅影响直接 subview

android - firebase 数据库按值排序工作错误

android - 最后的json值显示在android中的expandablelistview中

Android - ListView 重复事件

Android:隐藏 ImageView

android - 如何打开没有动画的Android Activity

android - notifyDataSetChanged() 不工作或触发?

android - 如何在保留字符状态的情况下向自动完成 TextView 动态添加建议