【问题标题】:Maintain ListView Item State维护 ListView 项状态
【发布时间】:2023-03-30 10:20:01
【问题描述】:

我的 ListActivity 绑定到一个 ArrayAdapter,我在其中覆盖了 getView() 方法。如果我在该方法中更改小部件的可见性或修改视图的背景颜色,那么一旦修改后的列表项在滚动离开屏幕后返回,这些更改就会以某种方式丢失。事实上,列表中的其他一些视图正在接受这些更改。

如何让修改后的视图在滚动后重新显示时看起来相同?

【问题讨论】:

  • 您可能希望从您的 getView() 方法中发布代码,以便我们更好地了解发生了什么。您是否在 getView 中检查数据的位置以设置和清除您的选择值?此外,视图确实会在列表中重用,因此您还需要在 getView 方法中检查预先存在的视图并相应地更改它们的状态。

标签: android


【解决方案1】:

你是每次都在膨胀一个新的视图,还是在使用传入的 convertView?

适配器通常会尝试回收视图,只创建足够的内容以提供平滑滚动。现有的回收视图作为 convertView 传入。您可以每次都膨胀并返回一个新视图(昂贵),或者只是根据位置重新设置 convertView(如果存在)。如果回收,则需要重新设置所有视图属性,因为无法保证您获得的回收视图与过去用于该位置的视图相同。

听起来你的错误是你没有正确地重新设置回收视图 (convertView) 的所有属性以匹配当前位置的数据。

【讨论】:

    猜你喜欢
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    相关资源
    最近更新 更多