我尝试在ListView中使用BaseAdapter来显示项目。我尝试用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。如何修改?
发布于 2012-02-02 11:45:48
您应该使用StateListDrawable来定义处于特定状态的背景。See the documentation.如果你看问题的右边,你可以看到其他非常相似的问题。->
例如,This one。
发布于 2015-01-02 16:57:37
这个问题背后的原因是你的onTouch函数总是返回false。对于ACTION_DOWN,执行代码,函数返回false。现在再也不会为ACTION_UP调用它了。将返回值更改为true应该可以解决您的问题。
发布于 2012-02-02 11:45:13
您需要在列表视图中设置选择模式
http://developer.android.com/reference/android/widget/AbsListView.html#CHOICE_MODE_SINGLE
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);https://stackoverflow.com/questions/9106819
复制相似问题