KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Tearing my hair out trying to get an Android ListView to do what I want. I want to have a ListView in single choice mode with a custom row layout that has a different background color for selected, pressed and checked (i.e. the choice is shown by a color rather than a check mark - this is what I would normally call the "selection" but selection in android seems line I'm about to choose before I press it) I thought of trying a background selector with the three states in it. It works fine for state_selected and state_pressed, but not state_checked. So I created a CheckableRelativeLayout that extends RelativeLayout and implements Checkable and used for the view of each row. A simplified version is shown here: <my.package.CheckableRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/bkg_selector"> > <ImageView android:id="@+id/animage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" /> </my.package.CheckableRelativeLayout> bkg_selector looks like <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/purple" /> <item android:state_checked="true" android:drawable="@drawable/red" /> <item android:state_selected="true" android:drawable="@drawable/darkpurple" /> <item android:drawable="@drawable/black" /> </selector> The colors are defined elsewhere. This still didn't work. So in the custom ListAdapter I tracked the "checked" row and tried (in getView) if( position == checkedPosition ) ret.getBackground().setState(CHECKED_STATE_S
Tags (comma-separated)
Save Edits
Cancel