按下时不会标记ListView项目

时间:2011-02-23 06:01:38

标签: android listview

我正在实施Android活动。 我在我的应用程序布局中使用ListView,并在继承的SimpleAdapter getView中通过setBackgroundResource设置视图颜色。

public class SpecialAdapter extends SimpleAdapter {

    public SpecialAdapter(Context context, List<HashMap<String, String>> items, int resource, String[] from, int[] to) {
        super(context, items, resource, from, to);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

       View view = super.getView(position, convertView, parent);

       if (mSensorsStatus[position].equals(mSensorStatus[SENSOR_STATUS_ALERT])) {
          view.setBackgroundResource(R.color.red);
       }
       else if (mSensorsStatus[position].equals(mSensorStatus[SENSOR_STATUS_ARMED])) {
          view.setBackgroundResource(R.color.light_grey);
       }

       return view;
    }
}

我的问题是,当我点击其中一个项目时,它没有像往常那样用黄色/橙色着色(当删除setBackgroundResource时它工作正常)

更多信息: 我尝试通过mListView.getChildAt(index).setBackgroundResource(R.color.red)而不是设置背景颜色 getView实现,结果是一样的。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

这是因为你调用了setBackgroundResource()并将背景设置为一种颜色。如果您希望列表选择有效,请不要调用setBackgroundResource(),或将后台资源设置为具有选择器和所有其他必要状态的合适StateListDrawable

答案 1 :(得分:0)

LayerList drawable可以匹配您所需的行为,如下所述: ListView item with list_selector_background as LayerList drawable