突出显示和禁用Listview项目

时间:2015-01-25 20:33:23

标签: java android android-listview highlighting

我的ListView有点问题。

我使用ArrayList<String>每个ArrayAdapter<String>填充我的ListView,其中包含超过100个项目 在我的对话框显示之前,我想突出显示并禁用某些项目。我找到了ListView.post(new Runnable() {...});的解决方案 我用lv.getChildAt(2).setBackgroundColor(Color.BLUE);突出显示我的项目 并且lv.getChildAt(3).setEnabled(false);的项目不可用 我也是OnItemClickListener()

现在我的问题:
如果在ListView中有11个项目在运行时可见,则highligt-和disable-pattern将重复每11个项目。
即如果我只突出显示3.项目,那么14.,25. ...项目将获得蓝色背景 如果我禁用了4.项目,那么15和26.等等也被禁用。

如果我快速滚动到按钮并返回顶部,则突出显示并禁用其他项目。

另一个问题是,我只能访问post-runnable中的第一个(11)可见项。如果我试图突出显示20.项目,应用程序将崩溃并出现NullPointerException。

如何在显示对话框之前阻止“项目回收”并获得对所有项目的完全访问权限?

1 个答案:

答案 0 :(得分:0)

我不确定我明白你想要达到的目的,但这里有一些建议。

1)永远回收,你永远不应该避免因为你可能遇到另一个问题而被召回,你的内存将耗尽。

2)在您的模型中实现可变界面,因此模型应该知道是否选择了某个项目,不仅仅是视图

3)当迭代每个元素时,使用ViewHolder,然后检查模型以查看是否选择了被选中的元素并使用所需的颜色

请查看此示例link,它描述了CAB(上下文操作栏)的使用,但它使用了我提到的内容。

我希望它可以帮到你。