ListView与CHOICE_MODE_MULTIPLE在自定义视图中使用CheckedText

Mac*_*rse 19 android

有很多关于如何使用的问题,CheckedTextView但我无法使其正常工作.

我有一个CursorAdapter与具有可自定义视图CheckedTextViewandroid: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]);
}
Run Code Online (Sandbox Code Playgroud)

我得到所有已检查的ID没有问题,但我看不到任何视觉反馈ListView.

换句话说,逻辑很好但是当我点击CheckedTextView绿色勾号没有出现时.

我正在读ListViewsrc代码,我找不到任何引用android:id/text1,让我想知道我是否应该自己处理widget的检查状态.

任何人都可以找到android:id/text1用于检查小部件的位置吗?

Com*_*are 33

基于我对代码的阅读,该行必须实现Checkable:

if (mChoiceMode != CHOICE_MODE_NONE && mCheckStates != null) {
    if (child instanceof Checkable) {
        ((Checkable) child).setChecked(mCheckStates.get(position));
    }
}
Run Code Online (Sandbox Code Playgroud)

这适用于具有选择模式的列表的库存行布局,因为行是a CheckedTextView,它实现Checkable.

因此,将Checkable接口添加到您的自定义View,将接口的方法委派给CheckedTextView,并查看是否有效.

  • 凉.这就是我做的.我做了一个自定义视图,它扩展了`LinearLayout`并实现了`Checkable`.使用`android:id/text1`是没有必要的,你只需要你的父视图可以检查.我现在得到重复的绿色蜱,但这是一个不同的问题.谢谢,马克! (5认同)