当我点击列表视图中的任何项目时,该项目突出显示,但是当我单击第二个项目时,它也突出显示。我只希望突出显示一个项目。
menu.xml文件
<ListView
android:id="@+id/list"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.8"
android:background="#50332b"
/>
Menulist.java
lstcategory = (ListView) view.findViewById(R.id.list);
lstcategory.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
lstcategory.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
view.setBackgroundColor(Color.BLUE);
答案 0 :(得分:3)
您需要跟踪当前所选元素的位置:
示例:
OnItemClickListener listViewOnItemClick = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View arg1, int position, long id) {
mSelectedItem = position;
mAdapter.notifyDataSetChanged();
}
};
并覆盖适配器的getView方法:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final View view = View.inflate(context, R.layout.item_list, null);
if (position == mSelectedItem) {
// set selected your color
}else{
//set default color
}
return view;
}
答案 1 :(得分:3)
在你的pojo类中添加boolean标志说
Boolean isSelected;
在其中应用getter和setter。 最初设置isSelected = false的所有值,以便不选择任何列表项
现在在onItem点击期间将当前对象的isSelected设置为true 像这样
onItemClick中的应用此
OnItemClickListener listViewOnItemClick = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View arg1, int position, long id) {
for(int i =0;i < lstcategory.size();i++}{
lstcategory.get(i).setIsSelected(false);
}
lstcategory.get(position).setIsSelected(true);
mAdapter.notifyDataSetChanged();
}
};
现在在适配器类的getview中检查列表项是否已检查。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final View view = View.inflate(context, R.layout.item_list, null);
if (lstcategory.get(position).getIsSelected()) {
// set selected your color
}else{
//set default color
}
return view;
}
答案 2 :(得分:0)
在drawable文件夹中创建一个row_selector
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@color/white" />
<item android:state_pressed="true" android:drawable="@color/white" />
<item android:state_activated="true" android:drawable="@color/white" />
<item android:drawable="@color/light_gray" />
</selector>
现在将它应用为android:background =“@ drawable / row_selector”,用于行的父视图。
在java代码中将ListView设置为CHOICE_MODE_SINGLE
listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE);