私はレイアウトでListView
を次のように使用します:
<ListView Android:id="@+id/list"
Android:layout_width="fill_parent"
Android:layout_gravity="center"
Android:layout_height="match_parent"
Android:layout_weight="0.7"
Android:layout_marginTop="5dp"
Android:orientation="vertical"
Android:layout_centerInParent="true"
Android:divider="@color/dark_grey"
Android:drawSelectorOnTop="false"
Android:focusable="true"
Android:layout_marginBottom="55dp"
Android:cacheColorHint="#00000000"
Android:listSelector="@color/light_grey"
Android:dividerHeight="1px" />
セレクタはうまく機能しますが、どうすればセレクタを無効にできますか?
私は試した:
listView.clearChoices();
listView.setSelected();
listView.setSelector();
...
他にもいくつかありますが、機能しません。選択したアイテムを通常の状態に戻す方法はありますか?そんなに複雑にできないのでは?
編集:プログラムによる解決策が必要です!
ありがとう!
requestLayout()
の後にListView
でclearChoices()
を呼び出します。それが動作します。
@Muerteが上で述べたように、次のことを行うと私にとってうまくいきました:
myListView.clearChoices();
myAdapter.notifyDataSetChanged();
レイアウト全体を再描画するよりも良いようです。
私にとってはそれは働いた:
listView.setAdapter(myAdapter);
これを試して
このような独自のセレクターxmlファイルを作成します
YourSelector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_enabled="false" Android:state_focused="true"
Android:drawable="@drawable/item_disabled" />
<item Android:state_pressed="true"
Android:drawable="@drawable/item_pressed" />
<item Android:state_focused="true"
Android:drawable="@drawable/item_focused" />
</selector>
このリンクをチェックしてください
あなたのセレクターリソースはここで間違っているようです。背景が透明なドローアブルを使用する必要があります。これが実際に行を色付けするものですが、choiceMode
のListView
ではありません。詳細は this 別の答えを確認してください。
ListViewを宣言するXMLでは、次のように使用します。
<ListView Android:id="@+id/my_list" Android:listSelector="#00000000" />
クリック後にセレクターを設定できます。
<?xml version="1.0" encoding="utf-8"?>
<item Android:drawable="@drawable/transparent_white" Android:state_focused="true" Android:state_pressed="true"/>
<item Android:drawable="@drawable/transparent_white" Android:state_focused="false" Android:state_pressed="true"/>
<item Android:drawable="@drawable/transparent_white" Android:state_focused="true"/>
<item Android:drawable="@drawable/transparent_white" Android:state_focused="false"/>
@ drawable/transparent_whiteは#00ffffffです
実際に機能したソリューションはありません。私のリストビューは、検索されたアイテムをリストするためのものであり、検索をやり直すことができます。結果を取得するときに、次のコードスニペットを追加し、それが機能しました:)
myAdapter.setSelectedIndex(-1);