2013-05-02 31 views
1

我有一個ListView指定一個listSelectorCheckedTextView在ListVew - setChecked()不爲Android 2.3的工作

<ListView 
     android:id="@+id/listView" 
     android:listSelector="@drawable/list_selector" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

每個列表項都有一個CheckedTextView

我需要的時候點擊列表中的一行,點擊項目保持檢查,這是我該怎麼做:

listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
listView.setOnItemClickListener(this); 
// .... 
@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    CheckedTextView checkedTextView = (CheckedTextView) view.findViewById(R.id.checkedTextView); 
    checkedTextView.setChecked(true); 
} 

它在Android 4.0上正常工作,但在Android 2.3上無法正常工作。如果你能提供任何線索爲什麼會發生這種情況,請多加諒解。

+0

使用'ListView.CHOICE_MODE_MULTIPLE'作爲首選模式,你不需要手動檢查/取消選中它。 – rciovati 2013-05-03 12:51:09

回答

0

我不知道爲什麼它的發生,但我有一個想法,以實現它以另一種方式

假設你正在使用自定義適配器在視圖創建的時間來加載列表項

集OnClickListener的CheckedTextView您的自定義適配器

final CheckedTextView ct = (CheckedTextView) view 
       .findViewById(R.id.checkedTextView); 
ct.setText("text"); 
ct.setOnClickListener(new OnClickListener() {   
    @Override 
    public void onClick(View v) { 
     // do what ever you want to perform here 
     if(ct.isChecked()){ 

     } else { 

     } 
    } 
}); 

另一種選擇here