Java 在android应用程序中显示列表视图之前,如何以编程方式编辑列表视图元素的背景色?
我正在Android Studio中使用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) {
对
列表中的内容,其中字符串
是列表视图元素,布尔值
指示是否选择了元素
我使用
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