0

アイテム (行) と行のサブアイテムを選択できるようにするには、 を使用しますandroid:descendantFocusability="blocksDescendants"。そして、私はonItemSelectイベントを使用しています....

行のカスタム背景も使用します。

問題は、行に触れると、チェックボックスも選択された背景 (チェックボックスを選択すると青いデフォルトの背景) になることです。これを回避するにはどうすればよいですか? 行に触れたときに、行自体の背景をアイテムの状態に合わせて調整したいだけです。

アダプタのリストビューの行として次の行レイアウトを使用しています:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rlMain"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@drawable/list_gradient"
android:descendantFocusability="blocksDescendants" >

<CheckBox
    android:id="@+id/cbSelected"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true" />

<TextView
    android:id="@+id/tvDayName"
    style="@style/text_list_info_big"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_toRightOf="@+id/cbSelected"
    android:text="Tag" />

<RelativeLayout
    android:id="@+id/drag_handle"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true" >

    <ImageView
        android:layout_width="60dp"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:src="@drawable/grabber" />
</RelativeLayout>

<LinearLayout
    android:id="@+id/lvData"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_toLeftOf="@+id/s"
    android:layout_toRightOf="@+id/tvDayName"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tvCount"
        style="@style/text_list_info"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:text="" />

    <TextView
        android:id="@+id/tvInfo"
        style="@style/text_list_info"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:text="" />

    <TextView
        android:id="@+id/tvInfo2"
        style="@style/text_list_info"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:text="" />
</LinearLayout>


</RelativeLayout>

PS: をonClick使用する代わりに、アダプタで行とサブ項目のイベントを処理できることはわかっonItemClickていますが、DragAndSortList ビューを使用していて、その方法でドラッグ アンド ドロップを使用しても機能しません...

4

1 に答える 1

0

解決策を見つけました。行の SetPressed のオーバーライドが機能しませんでした。

今、私は次の RelativeLayout を使用しており、それが私の問題を解決しています:

import android.content.Context;
import android.util.AttributeSet;
import android.widget.RelativeLayout;

public class UnpressableRL extends RelativeLayout
{
    public UnpressableRL(Context context, AttributeSet attrs)
    {
        super(context, attrs);
    }

    @Override
    protected void  dispatchSetPressed(boolean pressed) {
        // avoid handing on the event to the child views
     }
}
于 2013-06-26T13:17:33.317 に答える