ListView with CHOICE_MODE_MULTIPLE using CheckedText in a custom view
Based on my read of the code, the row has to implement Checkable
:
if (mChoiceMode != CHOICE_MODE_NONE && mCheckStates != null) {
if (child instanceof Checkable) {
((Checkable) child).setChecked(mCheckStates.get(position));
}
}
This works for the stock row layouts for lists with choice mode because the row is a CheckedTextView
, which implements Checkable
.
So, add the Checkable
interface to your custom View
, delegating the interface's methods to the CheckedTextView
, and see if that works out.
Related videos on Youtube
Macarse
Engineer working at Expedia. Author of an android development book entitled 50 Android Hacks.
Updated on April 11, 2020Comments
-
Macarse over 3 years
There are plenty of questions of how to use
CheckedTextView
but I can't make it work correctly.I have a
CursorAdapter
with a custom view which has aCheckedTextView
withandroid:id="@android:id/text1"
. I have usedandroid:id/text1
because there are different questions that mention that if you use it you will get the choice mode multiple for free.If I do something like this:
final long[] checkedIds = mListView.getCheckedItemIds(); for ( int i = 0 ; i < mListView.getCheckedItemCount() ; i++ ) { Log.d(TAG, "id checked: " + checkedIds[i]); }
I get all the checked ids without an issue, but I can't see any visual feedback in the
ListView
.In other words the logic is fine but when I click the
CheckedTextView
The green tick doesn't show up.I was reading the
ListView
src code and I couldn't find any reference toandroid:id/text1
and makes me wonder if I should handle widget's checked state myself.Can anyone spot where
android:id/text1
is used to make the widget checked or not? -
Macarse over 12 yearsCool. That's what I did. I did a custom view which extends
LinearLayout
and implementsCheckable
. Usingandroid:id/text1
is not necessary, you just need your parent view to be checkable. I am now getting duplicated green ticks but that's a different problem. Thanks, Mark! -
Aditya Vyas-Lakhan over 7 yearswhat if i have radiobutton in base adapter?