Android 如果列表视图中的项目未选中,如何更改列表视图中的背景色

Android 如果列表视图中的项目未选中,如何更改列表视图中的背景色,android,xml,android-layout,Android,Xml,Android Layout,我正在android中开发一个应用程序,其中包含一个列表视图,当点击某个项目时,该项目的背景颜色会发生变化(已经使用.xml文件中的“ListSelector”执行)。现在我需要取消选择通过“mListview.clearChoices()”完成的项目。但之前选择的项目的背景色不会改变。 你们能给出一些解决方案吗 以下是我的xml代码: <ListView android:id="@+id/listView" android:layout_width

我正在android中开发一个应用程序,其中包含一个列表视图,当点击某个项目时,该项目的背景颜色会发生变化(已经使用.xml文件中的“ListSelector”执行)。现在我需要取消选择通过“mListview.clearChoices()”完成的项目。但之前选择的项目的背景色不会改变。 你们能给出一些解决方案吗

以下是我的xml代码:

<ListView
          android:id="@+id/listView"
          android:layout_width="@dimen/dp_130"
          android:layout_height="wrap_content"
          android:background="@color/malibu"
          android:gravity="center"
          android:minHeight="@dimen/dp_50"
          android:listSelector="#e60b62da"/>

以下是活动文件中的代码:

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                check = 1;
                item_position=position;
                Toast.makeText(MacroActivity.this, "Item clicked_ macro" + position, Toast.LENGTH_SHORT).show();
                item_value = (String) mListView.getItemAtPosition(position);
                Toast.makeText(MacroActivity.this, "Item clicked_ macro_value" + item_value, Toast.LENGTH_SHORT).show();
                    mListView.clearChoices();
            }
        });
mListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
检查=1;
项目位置=位置;
Toast.makeText(MacroActivity.this,“项目单击了宏”+位置,Toast.LENGTH\u SHORT.show();
item_值=(字符串)mListView.getItemAtPosition(位置);
Toast.makeText(MacroActivity.this,“项目单击的\uMacro\u值”+项目的\u值,Toast.LENGTH\u SHORT.show();
mListView.clearChoices();
}
});

当您选择列表项视图时(进入
onItemClick
方法),您可以在适配器中设置一个变量,以保留所选列表项索引。然后可以调用
notifyDatasetChange()
。在创建和设置列表项视图属性的适配器中,可以检查所选索引是否与当前所选视图对应。在这种情况下,您可以设置一种颜色,否则您可以设置另一种颜色


希望有帮助

这是解决上述问题的可行方案之一。我使用了listview.setSelector()函数,在该函数中,为listview中的项指定的背景颜色可以为空,但如果需要,此函数不允许为listview中的另一项设置背景颜色

mListView.setSelector(新的可着色(0))


您可以向所选列表项传递布尔标志,然后可以使用notifydatasetchange();要在适配器中选择如何处理所选的当前列表项,请注意,在声明适配器时还必须传递布尔标志。