单击时所有项目的Android ListView setBackground

时间:2013-02-02 09:27:17

标签: java android android-listview

我为项目设置了背景,点击了。

list  = (ListView)findViewById(R.id.listView1);

list.setOnItemClickListener(new OnItemClickListener() {
    @Override
    //ListView parent, View v, int position, long id 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        arg1.setBackgroundColor(Color.RED);
    }
});

问题是,当我点击另一个项目时,最后一个项目和新项目将是红色。是否可以在setOnItemClickListener中为最后一项(或所有)设置Color Red?

非常感谢。

2 个答案:

答案 0 :(得分:0)

是的,在xml中使用选择器标签创建自定义背景可绘制,并将其添加为子布局的背景。

有关详情,请参阅此处: http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

答案 1 :(得分:0)

问题是他们需要从上一个视图中删除背景,因此您需要获取之前的项目视图并从该视图和当前视图集背景中删除背景。

  1. 如果要重置列表视图,则需要重置循环。
    1. 你必须以某种方式存储以前选择的项目位置。而不是点击时间你可以删除background.you可以获得以前的设置项目IE。

      public View previousItemView(){ 
          int wantedPosition =  childPosition;
      // This is the same as child #0
      int firstPosition = parent.getFirstVisiblePosition();
      int wantedChild = wantedPosition - firstPosition;
      // Say, first visible position is 8, you want position 10, wantedChild
      // will now be 2
      // So that means your view is child #2 in the ViewGroup:
      if (wantedChild < 0 || wantedChild >= parent.getChildCount()) {
          convertView = null;
        } else {
          // Could also check if wantedPosition is between
          // listView.getFirstVisiblePosition() and
          // listView.getLastVisiblePosition() instead.
          convertView = parent.getChildAt(wantedChild);
        }
        return convertView;
      }