1

このリンクからの参照でリストビューを作成しています。リストビューで特定の行を強調表示しようとしています。ボタンを押すと、特定の行が一瞬強調表示されました。しかし、私が望むのは、次の行のボタンを押すまで、その行は同じ色のままであるべきです。私のリストビューは

<ListView
        android:id="@+id/mainListView"
        android:layout_width="154dp"
        android:layout_height="fill_parent"
        android:layout_margin="10dp"
        android:background="@drawable/layer_list"
        android:dividerHeight="2px"
        >

リストビューでは、テキストビューとイメージビューを配置しています。ビューを強調表示するために、このチュートリアルに従いました。アンドロイドが初めてです。これを達成するのを手伝ってください。前もって感謝します..

4

2 に答える 2

1

描画可能なフォルダーlistview_item_selection_effect.xmlにセレクターを作成する

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_focused="true">
    <shape>
        <solid android:color="#ffffff" />
    </shape>
</item>
    <item>
    <shape>
        <solid android:color="#00a7eb" />
    </shape>
</item>
</selector>

ListViewを持つあなたのレイアウトで

android:background="?android:attr/activatedBackgroundIndicator"

あなたのアクティビティでクリックされたListViewアイテムで

   listView.setOnItemClickListener(new OnItemClickListener(){
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3){ 
       listView.setSelector(R.drawable.listview_item_selection_effect);
    listView.setItemChecked(position,true);
    }
});

リストビュー

android:choiceMode="singleChoice"
于 2013-09-04T09:47:26.320 に答える
0

a) カスタム レイアウトを使用する

    MyLayout extends LinearLayout implements Checkable {
    boolean check = false
    public void setChecked(boolean checked) {
          if (checked){
             //HIGHLIGHT THE BACKGROUND
          }{
            // remove the background
          }

    }
    public void toggle() {
        setChecked(!check);
    }
    }

b)カスタムリストビューアイテムMyLayoutでレイアウトとして使用

c)あなたの活動の実装OnItemClickListeneronItemClick 呼び出しでlistview.setItemChecked(position, true);

于 2013-09-04T09:43:56.680 に答える