我有两个 ListView(A 和 B),其中包含相同类型的项目(我创建的类)
当我单击 A 中的某个项目时,它会将该对象添加到 B 上,如果我再次单击,则会将其删除。
只是当选择一个项目时,我使用 view.setBackgroundColor(myColor) 更改其背景。
我希望能够从列表 B 中删除该项目(它有效),但我还想重置背景颜色。我不知道如何获取我要删除的该项目的视图。
有任何想法吗?
无法保证任何特定的 ListView 项目在任何给定时间都会有视图。如果该项目当前位于屏幕外,则它可能没有视图。由于特定项目可能没有视图,因此尝试获取该项目的视图可能没有任何意义。
除此之外,由于 ListView 创建和重用视图的方式,如果您直接修改视图,您会看到一些奇怪的、不良的效果。当用户滚动列表时,变得可见的项目将错误地以与位于可见部分之外的其他项目相同的背景结束。
我不知道接下来的内容是否是实现您的功能的最佳方法,因为我不知道更改后重建列表的成本。这是我执行此操作的(可能是幼稚的)方法:
- 将另一个布尔成员添加到您的数据对象中,例如
isInSecondList
.
- 覆盖
getView()
在适配器中。在getView()
,根据项目的值将背景设置为正常或突出显示isInSecondList
.
- 当从第二个列表中添加或删除项目时,更新数据对象以反映更改,然后调用适配器的
notifyDataSetChanged()
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)