web-dev-qa-db-ja.com

リストビューで選択したアイテムの選択を解除します

私はレイアウトで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();
...

他にもいくつかありますが、機能しません。選択したアイテムを通常の状態に戻す方法はありますか?そんなに複雑にできないのでは?

編集:プログラムによる解決策が必要です!

ありがとう!

18
Ron

requestLayout()の後にListViewclearChoices()を呼び出します。それが動作します。

33
M-WaJeEh

@Muerteが上で述べたように、次のことを行うと私にとってうまくいきました:

myListView.clearChoices();
myAdapter.notifyDataSetChanged();

レイアウト全体を再描画するよりも良いようです。

11
Suragch

私にとってはそれは働いた:

listView.setAdapter(myAdapter);
3

これを試して

このような独自のセレクター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>

このリンクをチェックしてください

ここ

あなたのセレクターリソースはここで間違っているようです。背景が透明なドローアブルを使用する必要があります。これが実際に行を色付けするものですが、choiceModeListViewではありません。詳細は this 別の答えを確認してください。

0
The Dreams Wind

ListViewを宣言するXMLでは、次のように使用します。

<ListView Android:id="@+id/my_list" Android:listSelector="#00000000" />
0
user2448968

クリック後にセレクターを設定できます。

<?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です

0
kvh

実際に機能したソリューションはありません。私のリストビューは、検索されたアイテムをリストするためのものであり、検索をやり直すことができます。結果を取得するときに、次のコードスニペットを追加し、それが機能しました:)

myAdapter.setSelectedIndex(-1);

0
Rino