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

时间:2018-04-27 08:50:57

标签: android xml android-layout

我正在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();
            }
        });

2 个答案:

答案 0 :(得分:0)

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

希望有所帮助

答案 1 :(得分:0)

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

  

mListView.setSelector(new ColorDrawable(0));