Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 突出显示并禁用Listview项目_Java_Android_Android Listview_Highlighting - Fatal编程技术网

Java 突出显示并禁用Listview项目

Java 突出显示并禁用Listview项目,java,android,android-listview,highlighting,Java,Android,Android Listview,Highlighting,我的ListView有点问题 我在列表视图中填充了一个ArrayList,每个ArrayAdapter包含100多个项目。 在显示对话框之前,我想突出显示和禁用一些项目。我用ListView.post(newrunnable(){…})找到了解决方案 我用lv.getChildAt(2.setBackgroundColor)(Color.BLUE)突出显示我的项目 并使用lv.getChildAt(3).setEnabled(false)取消项目 我也在一个OnItemClickListener

我的ListView有点问题

我在列表视图中填充了一个
ArrayList
,每个
ArrayAdapter
包含100多个项目。
在显示对话框之前,我想突出显示和禁用一些项目。我用
ListView.post(newrunnable(){…})找到了解决方案
我用
lv.getChildAt(2.setBackgroundColor)(Color.BLUE)突出显示我的项目
并使用
lv.getChildAt(3).setEnabled(false)取消项目
我也在一个
OnItemClickListener()
中执行这两项操作

现在我的问题是:
如果在ListView中有11项在运行时可见,则highligt-和disable模式将每11项重复一次
i、 e.如果我只突出显示3。项目14、25。。。项目将获得蓝色背景。
如果我禁用4。项目15。和26。等等都被禁用了

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

另一个问题是,我只能访问post runnable中的前(11)个可见项。如果我试着突出显示20。项目应用程序将因NullPointerException而崩溃


如何防止“项目回收”并在显示对话框之前完全访问所有项目?

我不确定我是否理解您想要实现的目标,但这里有一些建议供您参考

1) 始终循环使用,您永远不应该避免重复使用,因为您可能会遇到另一个问题,您将耗尽内存

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

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

请看一看这个例子,它描述了CAB(上下文操作栏)的使用,但它使用了我提到的东西

我希望它能帮助你