2012-05-29 14 views
7

私はAndroid用のアプリケーションを開発しています。ExpandableListViewにグループ項目のボタンを入れるにはどうすればいいですか?

ExpandableListViewのグループにボタンを配置するにはどうすればよいですか?

ボタンをクリックすると、グループを開くか閉じるのではなくダイアログが表示されます。ボタンの外側をクリックすると、グループは通常は開閉を行います。

下の画像は、ボタンを挿入したい場所を示しています。

http://img193.imageshack.us/img193/2060/expandablelistviewbutto.png

+0

uはまだこの問題を解決することができましたグループにとボタンgroup.parent内側をクリックするのに役立ちますか? – modabeckham

答えて

0

私は自分のExpandableListViewを作成しました。私はXMLとクラスのレイアウトを使ってコンポーネントをビルドしました。

驚くべきことに、それは非常に簡単でした。

標準のExpandableListViewよりもはるかに理解しやすくなりました。なぜなら、リストの各要素(リスト自体、グループ、アイテム)のクラスとレイアウトを作成したからです。私の意見では、コードの表現力と可読性を低下させるマップリストのリストを乱す必要はありませんでした。

さらに、リストはきわめて柔軟でカスタマイズ可能になります。実行時にグループやアイテムを簡単に追加したり削除したりすることができます。これで、リストの外観と内部コンポーネントを自由に変更できます。

私が作成したExpandableListViewは、標準などと同じことをすることができます。パフォーマンスが損なわれているかどうかは分かりませんが、目に見える問題は見られませんでした。

+0

どのようにボタンを置いてそれを機能させることができましたか?私はこの問題を抱えていますが、私は解決策を考え出すことができません。http://stackoverflow.com/questions/11205052/button-in-a-row-in-expandablelistview – noloman

0

あなたはこの1つ(例えばinflate_xml_groupview.xml)のように、ボタンを含むカスタムXMLファイルでgroupViewを膨らませる必要があります。

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/FrameLayoutGroupView" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 


    <Button 
     android:id="@+id/myButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="ButtonOfMyExpandableListGroupView" 
     android:visibility="visible" /> 

</FrameLayout> 

次にあなたがBaseExpandableListAdapterを拡張するカスタムExpandableListAdapterを作成して、上のボタンを取得する必要があります次のようなgetGroupView()メソッド:

public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if (convertView == null) { 

     convertView = inflater.inflate(R.layout.inflate_xml_groupview, null); 
     holder = new ViewHolder(); 
     holder.Button = (Button) convertView.findViewById(R.id.myButton); 
     convertView.setTag(holder); 
     } else { 
     holder = (ViewHolder) convertView.getTag(); 
     } 
     holder.position = ListOfItems.get(groupPosition).getPosition(); 
     Button.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       Toast.makeText(getApplicationContext(), "Button " + groupPosition + " is clicked !", Toast.LENGTH_SHORT).show(); 
       // DO STUFF 
     } 
    }); 
} 

希望します。

19

Android ExpandableListViewは、グループまたは子供の任意のボタンを持つことができます。

アダプターのボタンが次のようにフォーカスできないようにしてください。

editButton.setFocusable(false); 

これは別々

+0

はい、これが答えになるはずです。 –

+6

XMLではなく、コードで行うことが重要です。魅力のように働き、共有してくれてありがとう。 –

+0

私には同じ問題があります。ヘッダーレイアウトのチェックボックス。展開/折りたたみではありません。このラインを追加した後は、魅力のように動作します –

関連する問題