繁体   English   中英

突出显示并禁用Listview项目

[英]Highlight and disable Listview items

我的ListView有点问题。

我每个ArrayAdapter<String>ArrayList<String>填充ListView的项超过100个。
在显示对话框之前,我要突出显示并禁用某些项目。 我已经找到与ListView.post(new Runnable() {...});解决方案ListView.post(new Runnable() {...});
我用lv.getChildAt(2).setBackgroundColor(Color.BLUE);突出显示我的项目lv.getChildAt(2).setBackgroundColor(Color.BLUE);
并使用lv.getChildAt(3).setEnabled(false);
我也都在OnItemClickListener()做这OnItemClickListener()

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

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

另一个问题是,我只能访问后运行的前(11)个可见项。 如果我尝试突出显示20.项目,则该应用程序将崩溃,并显示NullPointerException。

在显示对话框之前,我该怎么办才能防止“物品回收”并获得对所有物品的完全访问权限?

我不确定我了解您想要实现什么,但是这里有一些建议。

1)始终回收,永远不要避免报废,因为您可能会遇到其他问题,将耗尽内存。

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

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

请看一下这个示例链接 ,它描述了CAB(上下文操作栏)的用法,但它使用了我所提到的内容。

希望对您有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM