3

ここに私の問題があります:私はリストされた異なる場所とこれらの場所へのマーカーを持つActivityを含むを持っています。ListViewMapView

私が今欲しいのは、MapViewマーカーの1つがクリックされたときに、それぞれのListViewアイテムを選択して(クリックされたかのように)光らせることです。

メソッドListView.setSelection(int)とを見つけましたListView.requestChildFocus(View, View)。最初のものは私が望むことをほぼ実行します(長いリストがある場合は、アイテムが表示されるまでリストを通過します)が、アイテムを明示的に表示するためのグロー効果がありません。2番目については、2番目のパラメーターが何のためにあるのかわかりません(これは、アクティビティで以前にフォーカスされたビューですか?)。

それで、アイテムを輝かせる方法はありますか?物理キーボードを使用して選択する場合と同様です。

ありがとう。

編集:補助的な質問、ListViewアイテムがクリックされたときに背景として使用される標準のドローアブルを取得することは可能ですか?R.attrのようなもので見つけることができますlistPreferredItemHeightか?

4

1 に答える 1

5

アイテムを選択する代わりに、チェックさせたいと思います。これによりStateListDrawable、アイテムの外観を変更するためにを使用できます。これは、アイテムがタッチモードのときにアイテムが選択されたままにならないためです。をListView単一選択モードにし、リストビューアイテムをチェック可能にし、を使用しStateListDrawableてチェック済みアイテムの外観を変更する必要があります。

ListViewを単一選択モードにするには:

getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);

次に、でアイテムを強調表示する場合は、次のListViewようにします。

getListView().setItemChecked(index, true);

行のレイアウトのルートアイテムを実装する必要があると思います。例またはオンラインCheckableで見つけることができるはずです。CheckableRelativeLayoutCheckableLinearLayout

これにより、アイテムは「チェック」されますが、それでも光る必要があるため、行のレイアウトStateListDrawableでは、これをレイアウトに追加して、チェックされたときの外観を変更するためにを使用する必要があります。

android:background="@color/list_view_item_selector"

次のようなファイルを作成しcolor\list_view_item_selector.xmlます。

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:drawable="@color/selected_item" />
    <item android:drawable="@android:color/transparent" />
</selector>
于 2011-03-30T14:16:20.920 に答える