2012-06-13 12 views
6

私はこのようなことを達成しようとしています。 拡張可能リストは特定のカテゴリの名前で構成され、親がクリックされると、そのカテゴリのすべての子のリストが表示されます。 ここで、任意のカテゴリに子を動的に追加したいとしますか? どうすればいいですか? リスト内のすべての親を持つボタンをクリックすると、その上に新しい子が追加されますか?Android ExpandableListView親のボタン

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

このスレッドは見つかりましたが、私のコードで実装できませんでした。 Android Row becomes Unclickable with Button

+0

どのようにリストを移入していますか?カーソルから?配列については? – Barak

+0

私は配列を使用しています。 – Swayam

答えて

6

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

私は以下のことがうまくいくはずです(ただし、私はテストするために配列を使ったプロジェクトを持っていません)。

私はあなたのグループの行のレイアウトを知らないので、ここでは参考にしましょう。

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; 
} 
関連する問題