我尝试使用BaseAdapter在ListView中显示项目。 我在BaseAdapter中尝试下面的代码。
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
//...
convertView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
v.setBackgroundResource(R.drawable.ic_corner_four_click);
break;
case MotionEvent.ACTION_UP:
v.setBackgroundResource(R.drawable.ic_corner_four);
break;
}
return false;
}
});
}
触摸项目时,会将背景更改为ic_corner_four_click。 但是当释放手指或移动到其他项目时,它没有重新更改为ic_corner_four。 如何修改?
答案 0 :(得分:3)
您应该使用StateListDrawable
来定义特定状态的背景。 See the documentation.如果您查看问题的右侧,您可以看到其他非常相似的问题。 --->
答案 1 :(得分:2)
此问题背后的原因是您的onTouch
函数始终返回false
。对于ACTION_DOWN
,代码被执行,函数返回false。现在永远不会要求ACTION_UP
。将返回值更改为true
可以解决您的问题。
答案 2 :(得分:1)
您需要在列表视图中设置选择模式
http://developer.android.com/reference/android/widget/AbsListView.html#CHOICE_MODE_SINGLE
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);