1

我有一个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。如果您能提供任何线索为什么会发生这种情况,将不胜感激。

4

1 回答 1

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 {

        }
    }
});

这里的另一个选择

于 2013-05-03T12:47:45.233 回答