重置ListView中的视图

时间:2011-12-06 15:42:54

标签: android listview view textview

我的ListView是一个简单的ListView,但他有问题 我使用名为SimpleCursorAdapter的{​​{1}},我希望TextView为粗体,并在单击项目时更改背景。我还希望其他先前受影响的ListView项目自行重置。

以下是adapter事件的代码。此代码重置可见列表项。并正确加粗所选项目。但是,当用户滚动随机onListItemClick时会加粗,我推测是因为视图正在被回收。

因此,onClick我想重置之前点击的所有textViews并加粗点击的项目。

我没有按预期的方式工作:

TextViews

2 个答案:

答案 0 :(得分:1)

正常情况下,正如您所说,回收商使用屏幕上的旧视图而不是创建新视图。您需要做的是更改适配器,您还需要在getView方法中实现所需的逻辑。此外,您需要适配器来支持不同类型的项目才能使用不同的背景。

看看这个example,该示例有不同的目标,但它会应用您需要的解决方案。

抱歉,但没有快速解决方案。如果有帮助,请告诉我。

答案 1 :(得分:0)

如前所述,您遇到的问题是基于Android重用视图来加快listview的滚动速度。我在过去修复此问题是维护一个并行数组,用于跟踪项目是否应加粗。在getView代码中,检查项目位置中的标志是否为真粗体,否则将其解开(您必须将其设置回其默认状态)。然后,当用户单击某个项目时,切换该标志并调用notifyDataSetChanged。这将强制重绘并加粗所选项目。