2012-02-01 18 views
2

名前と番号を持つリストビューと、SimpleAdapterの連絡先からチェックボックスに値が設定されているアイテムをクリックしてアイテムの色を変更したり、チェックボックスを有効にしたり、ユーザーが同じアイテム私はその項目の選択を解除したい。 どうすればいいですか? ありがとう。リスト表示アイテムの選択を解除しますか?

これは私が成功した色を変更することができ、私のコードですが、私は今、再びその状態を変更するために、第2クリックでその特定の項目のためと比べて、チェックボックスの状態を変更するはありませんか:

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; 
      }       
     }      
     }     
    } 
    }); 
} 

答えて

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()) ; 

によりしかし、最後に、あなたがそのどのオブジェクトを知ることができるようにあなたは、配列、またはあなたのオブジェクトのブール値を持つ必要がありますがマークされていることをされ行うことができますチェックして

+0

ではありませんそれは働いていますが、リストの最初のアイテムの場合のみ、それはなぜですか? 2番目の項目をクリックすると、最初のチェックボックスが再び状態を変更します。 – Wolf87

+0

これは、古い表示が再描画されたときに表示されないためです。あなたのデータの状態を保存する必要がありますので.... list.size()の長さでブール値の配列を取ってください。各項目をfalseにマークします。あなたのListAdapterのgetView()メソッド。ビューマークからチェックボックスを抽出するsetChecked(array [position]);これにより、booleanの状態を配列リストと同期させることができます。 =次に、listViewのonItemClick()で配列を設定します。array [position] =!array [position];次にcheckbox.setChecked(array [position]);これを試して。また、古いビューのチェックデータも保存されます – Arslan

関連する問題