我有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上无效。如果你能解释为什么会发生这种情况,我将不胜感激。
答案 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