有很多关于如何使用CheckedTextView
的问题,但我无法使其正常工作。
我有CursorAdapter
个自定义视图,其中CheckedTextView
为android:id="@android:id/text1"
。我使用过android:id/text1
因为有不同的问题提到如果你使用它,你将获得免费的选择模式。
如果我这样做:
final long[] checkedIds = mListView.getCheckedItemIds();
for ( int i = 0 ; i < mListView.getCheckedItemCount() ; i++ ) {
Log.d(TAG, "id checked: " + checkedIds[i]);
}
我得到所有已检查的ID没有问题,但我在ListView
中看不到任何视觉反馈。
换句话说,逻辑很好但是当我点击CheckedTextView
绿色勾号没有出现时。
我正在阅读ListView
src代码,我找不到对android:id/text1
的任何引用,让我想知道我是否应该自己处理widget的检查状态。
是否有人可以找到使用android:id/text1
来检查小部件的位置?
答案 0 :(得分:33)
根据我对代码的阅读,该行必须实现Checkable
:
if (mChoiceMode != CHOICE_MODE_NONE && mCheckStates != null) {
if (child instanceof Checkable) {
((Checkable) child).setChecked(mCheckStates.get(position));
}
}
这适用于具有选择模式的列表的库存行布局,因为该行是CheckedTextView
,它实现了Checkable
。
因此,请将Checkable
界面添加到自定义View
,将界面的方法委派给CheckedTextView
,然后查看是否有效。