我有一个带有自定义适配器的listView。选中后,我已经使listView项目的背景更改颜色。这适用于三星Galaxy S2上的Ice Cream Sandwich 4.0.4和模拟器上的ICS 4.0.3。但它不适用于4.2.2 JellyBean模拟器。在JB上,当一个项目被选中时,它的背景保持不变。
这是我的代码的一部分,我有选择项目时设置背景颜色的逻辑:
private int mItemIndex = -1;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
....
if (convertView == null) {
....
....
} else {
/* To highlight the selected item */
if (position == mItemIndex) {
convertView.setSelected(true);
convertView.setPressed(true);
convertView.setBackgroundColor(context.getResources().getColor(R.color.SkyBlue));
} else {
convertView.setSelected(false);
convertView.setPressed(false);
convertView.setBackgroundColor(context.getResources().getColor(R.color.WhiteSmoke));
}
/* To highlight the selected item - end */
....
....
return v;
}
或者,我试过了
convertView.setBackgroundResource(context.getResources().getColor(R.color.SkyBlue));
而不是setBackgroundColor,它也不起作用。
是否有一种解决方法可以让它在Jellybean上运行? 或者我在代码中遗漏了什么?
感谢。
答案 0 :(得分:0)
使用具有两个不同状态图像的自定义选择器进行选择和非选择
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/pause_button"
android:state_selected="true" />
<item android:drawable="@drawable/play_button" />
</selector>
1.在您的活动中创建一个全局变量
View previous;
(带你的listrow视图组)
在你的onCreate方法中,在setContentView
之后初始化previous=new View(context);
在listView的onItemClick监听器中,这样做
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View view,
int arg2, long arg3) {
view.setSelected(true);
previous.setSelected(false);
previous=current;
}
});