我的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。
如何在显示对话框之前阻止“项目回收”并获得对所有项目的完全访问权限?
答案 0 :(得分:0)
我不确定我明白你想要达到的目的,但这里有一些建议。
1)永远回收,你永远不应该避免因为你可能遇到另一个问题而被召回,你的内存将耗尽。
2)在您的模型中实现可变界面,因此模型应该知道是否选择了某个项目,不仅仅是视图
3)当迭代每个元素时,使用ViewHolder,然后检查模型以查看是否选择了被选中的元素并使用所需的颜色
请查看此示例link,它描述了CAB(上下文操作栏)的使用,但它使用了我提到的内容。
我希望它可以帮到你。