我正在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();
}
});
答案 0 :(得分:0)
当您选择列表项视图(进入onItemClick
方法)时,您可以在适配器中设置变量以保持选定的列表项索引。然后你可以拨打notifyDatasetChange()
。在您创建和设置列表项视图属性的适配器中,您可以检查所选索引是否与当前选定视图相对应。在这种情况下,您可以设置颜色,否则您可以设置另一种颜色。
希望有所帮助
答案 1 :(得分:0)
这是可用于解决上述问题的可行解决方案之一。我使用了listview.setSelector(),其中为listview中的项目指定的背景颜色可以无效,但是如果需要,此函数不允许为listview中的另一个项目设置背景颜色。
mListView.setSelector(new ColorDrawable(0));