ListView中的CheckedTextView - 设置Checked()不适用于Android 2.3

时间:2013-05-02 12:48:28

标签: android

我有ListView,指定listSelector

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

每个列表项都有CheckedTextView

 <CheckedTextView
        android:id="@+id/checkedTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="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上无效。如果你能解释为什么会发生这种情况,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

我不知道为什么会这样,但我有一个想法以另一种方式实现它

假设您正在使用自定义适配器加载列表项

在自定义适配器中创建视图时为CheckedTextView设置OnClickListener

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