Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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 在android应用程序中显示列表视图之前,如何以编程方式编辑列表视图元素的背景色?_Java_Android_Listview_Android Listview_Listviewitem - Fatal编程技术网

Java 在android应用程序中显示列表视图之前,如何以编程方式编辑列表视图元素的背景色?

Java 在android应用程序中显示列表视图之前,如何以编程方式编辑列表视图元素的背景色?,java,android,listview,android-listview,listviewitem,Java,Android,Listview,Android Listview,Listviewitem,我正在Android Studio中使用Java创建一个Android应用程序。我需要创建一个列表视图,在重新创建列表视图时,以前选择的元素将显示为选中。可以从列表视图中选择多个元素。首先创建列表视图,我们将跟踪保存在对列表中的内容,其中字符串是列表视图元素,布尔值指示是否选择了元素 我使用 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

我正在Android Studio中使用Java创建一个Android应用程序。我需要创建一个列表视图,在重新创建列表视图时,以前选择的元素将显示为选中。可以从列表视图中选择多个元素。首先创建列表视图,我们将跟踪保存在
列表中的内容,其中
字符串
是列表视图元素,
布尔值
指示是否选择了元素

我使用

public void onItemClick(AdapterView<?> parent, View view, int position, long id)
        {

            if(!tmpSelectedSkills.get(position).isSelected()){
                tmpSelectedSkills.get(position).setIsSelected(true);
                parent.getChildAt(position).setBackgroundColor(
                    Color.parseColor("#A9BCF5"));}
            else{
                tmpSelectedSkills.get(position).setIsSelected(false);
                parent.getChildAt(position).setBackgroundColor(
                        Color.parseColor("#ffffff"));}
        }

onItemClick
的签名,该签名对应于我要更改其背景色的
视图。

您可以在
适配器中创建一个方法
updateData()
。在
列表的
YourObject
为所选内容定义一个字段
布尔值。当您
单击listview的OnItem
时,通过方法
updateData()
将此字段设置为
true
notifyDataChanged
。在适配器中,检查字段==true,为行设置背景。对不起,我的英语不好

您可以在
列表适配器中处理此问题。使用
ArrayAdapter
,这将是
getView()
方法的一部分。对于
SimpleCursorAdapter
,可以通过
ViewBinder
完成。依此类推。@commonware您是指公共抽象android.view.view getView(int-position,android.view.view-convertView,android.view.ViewGroup-parent)?如果是这样,我不确定convertView在这里对应什么,以及父视图代表什么(是列表视图吗?
getView()
abstract
仅在
BaseAdapter
上。其他适配器类(例如,
ArrayAdapter
SimpleCursorAdapter
)有一个可以覆盖的具体实现。但是,是的,这就是我在前面的评论中引用的
getView()
方法。如果你不知道什么是
getView()
,或者它是如何工作的,那么在你开始重新思考你问题中提到的问题之前,你需要解决的知识差距要大得多。我想我明白你的意思了。getView()用于根据屏幕上可查看的项目,通过使用不可查看的视图创建新的项目,循环使用视图。这意味着,如果当前未显示,我尝试访问的视图可能不存在。为了更改项目的背景色,我必须覆盖getView()方法来检查选择状态,并在修改或不修改背景色的情况下生成它?“为了更改背景色…”——正确。现在,根据您在这里所做的操作,“更改背景色”可以是“通过
setActivated()
”将激活状态应用于行”,也可以是“更改用于行视图的任何容器的背景色”。这取决于你。但将其应用于新创建的列表的位置是
getView()
或类似的位置(例如,添加到
SimpleCursorAdapter
ViewBinder
)。
View view