0

次の階層を実現しようとしています: GridView -> すべてのアイテムは、背景、ImageView、および CheckBox を含むビュー (「コンテナー」と呼びましょう) です。

ユーザーがコンテナーをクリックした場合、チェックボックス、画像、または背景のどこであろうと、CheckBox はチェック済みの状態を変更する必要があります。

現在、次のレイアウトがあります。

<!-- main layout -->
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent">
    <Button android:id="@+id/selectBtn"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:text="Select" android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:minWidth="200dp" />
    <GridView android:id="@+id/imageGridView"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:numColumns="auto_fit" android:verticalSpacing="10dp"
        android:horizontalSpacing="10dp" android:columnWidth="90dp"
        android:stretchMode="columnWidth" android:gravity="center"
        android:layout_above="@id/selectBtn" />
</RelativeLayout>

<!-- gallery item layout - every grid item is inflated from this -->
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent">
    <ImageView 
        android:id="@+id/thumbImage" 
        android:layout_width="110dp" 
        android:layout_height="110dp"
        android:background="#999999"
        android:layout_centerInParent="true"
        android:contentDescription="image thumb"/>
    <CheckBox
        android:id="@+id/itemCheckBox" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true" 
        android:layout_alignParentTop="true" />
</RelativeLayout>

この後、チェックされたコンテナを取得できるようにしたいと考えています。

このレイアウトの作り方がよくわかりません。私のレイアウトは今でも問題なく表示されますが、クリックリスナーに反応する「コンテナ」はありません。チェックボックスがクリックに反応するようにすることしかできませんが、これはもちろんあまりユーザーフレンドリーではありません。では、クリックに役立つこれらのビューの周りにラッパー コンテナーを追加するにはどうすればよいでしょうか。どうもありがとう!

4

2 に答える 2

0

GridView のsetOnItemClickListener()メソッドを使用して、項目 (画像 + チェックボックス) のクリック リスナーを設定することもできます。リスナー内では、チェックボックスのチェック状態を変更できます。幸運を!

于 2013-08-23T18:04:31.090 に答える
0

ああ、気にしないでください... RelativeLayout は View と ViewGroup を拡張するので、次のようなものを使用できます。

RelativeLayout container = (RelativeLayout) holder.imageview.getParent();
container.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    Log.d("test", "clicked");
                    RelativeLayout cont = (RelativeLayout) v;
                    CheckBox cb = (CheckBox) cont.getChildAt(1);
                    if(cb.isChecked()) cb.setChecked(false);
                    else cb.setChecked(true);
                }
            });
于 2013-08-23T17:41:40.187 に答える