Android listview中的多个选定项保持高亮显示
所以,我所做的是当我点击listview项目时,它变成灰色。但是,当我从listview中选择另一个项目时,先前高亮显示的灰色项目将变为默认项目,新项目将变为灰色 我想要的是让它们都高亮显示,当点击高亮显示的项目时,它们也应该恢复正常 这是我的密码: 我的ListView XML My Color.xml My selector.xml Onclick-Listner 等待帮助和提前感谢 编辑: 这是我的列表适配器Android listview中的多个选定项保持高亮显示,android,listview,Android,Listview,所以,我所做的是当我点击listview项目时,它变成灰色。但是,当我从listview中选择另一个项目时,先前高亮显示的灰色项目将变为默认项目,新项目将变为灰色 我想要的是让它们都高亮显示,当点击高亮显示的项目时,它们也应该恢复正常 这是我的密码: 我的ListView XML My Color.xml My selector.xml Onclick-Listner 等待帮助和提前感谢 编辑: 这是我的列表适配器 在适配器中保留突出显示项目的列表。@shark非常感谢您的即时回复。你能给我一些
在适配器中保留突出显示项目的列表。@shark非常感谢您的即时回复。你能给我一些代码吗?或者更详细一点来实现这一点?您使用的是listSelector,其工作原理仅与此类似。通过将setSelected属性设置为列表单元格布局的background属性,可以实现所需的行为。您必须创建一个本地ArrayList以保持每个单元格的状态,以便在获取时再次设置背景单元格的状态recycled@SagarTrehanThanks非常感谢你的暗示。问题解决了!
<ListView
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginTop="5dp"
android:id="@+id/listView"
android:layout_marginRight="10dp"
android:choiceMode="multipleChoice"
android:listSelector="@drawable/selector"
android:layout_alignRight="@+id/group_name"
android:layout_alignEnd="@+id/group_name" />
<color name="list_pressed">#ffffff</color>
<color name="list_default">#d3d3d3</color>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Selected Item -->
<item android:state_selected="true"
android:drawable="@color/list_pressed" />
<!-- Default Item -->
<item
android:state_selected="false"
android:drawable="@color/list_default" />
</selector>
listView.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
view.setSelected(true);
GroupList clickedGroup = mygroupList.get(position);
String message = " you clicked name " + position + " and name is " + clickedGroup.getname();
Toast.makeText(addgroups.this, message, Toast.LENGTH_LONG).show();
}
});
private class MyListAdapter extends ArrayAdapter<GroupList>
{
public MyListAdapter()
{
super(addgroups.this, R.layout.grouplist, mygroupList);
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View itemView = convertView;
if(itemView == null)
{
itemView = getLayoutInflater().inflate(R.layout.grouplist, parent, false);
}
//find the contact to work
GroupList currentgroup = mygroupList.get(position);
TextView contactname = (TextView) itemView.findViewById(R.id.group_name);
contactname.setText(currentgroup.getname());
ImageView imageView = (ImageView) itemView.findViewById(R.id.add);
imageView.setImageResource(currentgroup.getimg());
return itemView;
//return super.getView(position, convertView, parent);
}
}