我的ListView
是一个简单的ListView,但他有问题
我使用名为SimpleCursorAdapter
的{{1}},我希望TextView为粗体,并在单击项目时更改背景。我还希望其他先前受影响的ListView项目自行重置。
以下是adapter
事件的代码。此代码重置可见列表项。并正确加粗所选项目。但是,当用户滚动随机onListItemClick
时会加粗,我推测是因为视图正在被回收。
因此,onClick我想重置之前点击的所有textViews并加粗点击的项目。
我没有按预期的方式工作:
TextViews
答案 0 :(得分:1)
正常情况下,正如您所说,回收商使用屏幕上的旧视图而不是创建新视图。您需要做的是更改适配器,您还需要在getView方法中实现所需的逻辑。此外,您需要适配器来支持不同类型的项目才能使用不同的背景。
看看这个example,该示例有不同的目标,但它会应用您需要的解决方案。
抱歉,但没有快速解决方案。如果有帮助,请告诉我。
答案 1 :(得分:0)
如前所述,您遇到的问题是基于Android重用视图来加快listview的滚动速度。我在过去修复此问题是维护一个并行数组,用于跟踪项目是否应加粗。在getView代码中,检查项目位置中的标志是否为真粗体,否则将其解开(您必须将其设置回其默认状态)。然后,当用户单击某个项目时,切换该标志并调用notifyDataSetChanged
。这将强制重绘并加粗所选项目。