6

私はこのようなことを達成しようとしています。展開可能なリストは特定のカテゴリの名前で構成され、親がクリックされると、そのカテゴリのすべての子のリストが表示されます。ここで、任意のカテゴリに子を動的に追加したいとしますか?それ、どうやったら出来るの ?リスト内のすべての親がクリックすると、その下に新しい子が追加されるボタンを保持しますか?

しかし、さまざまなフォーラムを見回してみると、すべての親の中にボタンクリックハンドラーを設定するのは本当に簡単ではないことに気づきました。しかし、それが唯一の方法である場合、誰かが私にいくつかのサンプルコードを教えてもらえますか?

このスレッドを見つけましたが、コードに実装できませんでした。 Androidの行はボタンでクリックできなくなります

4

1 に答える 1

6

グループビューにボタンを追加するのはそれほど難しいことではありません。

私は以下がうまくいくと信じています(私はテストするために配列に裏打ちされたExpandableListViewを使用するプロジェクトを持っていませんが)。

グループの行のレイアウトがわからないので、参考のためにここで作成します。

group_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/test"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >
    <TextView
        android:id="@android:id/text1"
        android:layout_width="wrap_content"
        android:layout_height="35dp"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:gravity="center_vertical"
        android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"
        android:textAppearance="?android:attr/textAppearanceLarge" />
    <Button
        android:id="@+id/addbutton"
        android:layout_width="wrap_content"
        android:layout_height="35dp"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:text="Add"
        android:textSize="12dp" />
</LinearLayout>

次に、getGroupViewアダプタからのメソッドで:

public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 
    if (convertView == null) {
        View convertView = View.inflate(getApplicationContext(), R.layout.group_layout, null);
        Button addButton = (Button)convertView.findViewById(R.id.addButton);

        addButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                // your code to add to the child list
            }
        });
    }        
    TextView textView = (TextView)convertView.findViewById(R.id.text1);
    textView.setText(getGroup(groupPosition).toString()); 
    return convertView; 
} 
于 2012-06-20T14:27:18.960 に答える