有没有一种方法可以在自定义适配器上调用 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/