在ListView中触摸项目时更改行背景颜色

时间:2012-02-02 03:35:43

标签: android listview

我尝试使用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。 如何修改?

3 个答案:

答案 0 :(得分:3)

您应该使用StateListDrawable来定义特定状态的背景。 See the documentation.如果您查看问题的右侧,您可以看到其他非常相似的问题。 --->

例如,

This one

答案 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);
相关问题