取消选择列表视图项?

时间:2012-02-01 20:46:41

标签: android

我有名单和数字的列表视图和从SimpleAdapter的联系人填充的复选框,并在项目点击我听事件和更改项目的颜色,我也想要更改复选框启用和用户再次点击相同的时间项目我想取消选择该项目。 我怎样才能做到这一点? 谢谢沃尔夫。

这是我的代码,我可以成功更改颜色,但我现在不知道如何更改该特定项目的复选框状态,而不是再次单击以更改该状态:

lImenik.setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
         // TODO Auto-generated method stub
         Object obj = lImenik.getItemAtPosition(position);
         String tmp = obj.toString();
         view.setBackgroundColor(Color.GRAY);

         for(int i = 0; i < adapter.getChildCount(); i++){
         if(i == position){
         if(position != prePos){

             adapter.getChildAt(i).setBackgroundColor(Color.GRAY);                              
             prePos = position;                             
          } else {
             adapter.getChildAt(i).setBackgroundColor(0x191919);
             prePos = -1;
          }                         
        }                       
      }                 
     }
  });
}

1 个答案:

答案 0 :(得分:2)

方法

public void onItemClick(AdapterView<?> adapter, View view,
                    int position, long id)

为您提供已单击的行的视图。您所要做的就是在该视图中标记或取消标记复选框。你可以通过

来做到这一点
public void onItemClick(AdapterView<?> adapter, View view,
                int position, long id) {
            // TODO Auto-generated method stub
            Object obj = lImenik.getItemAtPosition(position);
            CheckBox checkbox = ( CheckBox ) view.findViewById ( R.id.your_checkedbox_id );
            checkbox.setChecked ( !checkbox.isChecked() ) ;

但是你应该有对象的数组或布尔值,以便最后你可以知道哪个对象被标记为check,哪些不是