ListViewの行をタップして選択した後も選択された行の背景色を変えたままにする方法を紹介します。
res/drawable/list_item_selector.xml
タッチした時とタッチ後の色を変えるためのselectorを定義します。
android:drawable="@color/selected_list_item_color"/>
android:drawable="@color/selected_list_item_color"/>
res/values/colors.xml
list_item_selector.xmlで参照する色を定義します。
#ffd33f
#000000
res/layout/list_row.xml
ListViewの行を定義するレイアウトのbackgroundに上記のlist_item_selectorを設定します。
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_item_selector"
>
android:id="@+id/symbol_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="symbol"
/>
ListViewのItemClickListenerでクリックされたアイテムに対してsetSelected(true)を呼び出します。
こうすることでlist_item_selectorで設定したstate_selected=”true”の条件にマッチするようになります。
val unitList = findView(TR.unit_list)
unitList.setOnItemClickListener(new OnItemClickListener {
def onItemClick(parent: AdapterView[_], view: View, pos: Int, arg3: Long) {
view.setSelected(true)
}
})