I had exactly the same problem. I did not find a way to do this in XML, but I found a workaround in the code. The following code is tested in an application that supports API level 7 +
ListView:
public class ListViewAdapter extends BaseAdapter {
private int selectedItemPosition = -1;
public void selectItem(int i) {
selectedItemPosition = i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if (i == selectedItemPosition) {
textView.setBackgroundColor(context.getResources().getColor(R.color.highlight));
}
else {
textView.setBackgroundColor(Color.TRANSPARENT);
}
return view;
}
}
, OnItemClickListener onItemClickMethod:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
((ListViewAdapter) listview.getAdapter()).selectItem(position);
((ListView) parent).invalidateViews();
}
. , , , onItemClick(), .. selectItem(), invalidateViews(). invalidateViews() notifyDataSetChanged().
ListSelector , . API 7 8 .