2017-03-11 7 views
1

Fragmentの中に表示されているExpandableListViewがあります。ユーザーが強調表示された矢印をクリックすると、Fragmentを変更する適切な方法は何ですか?また、クリックされたボタンのグループインデックス(ハイライトされた矢印のインデックス0)を取得するにはどうすればよいですか?ExpandableListViewグループ内でボタンをクリックしたときにフラグメントを変更する方法はありますか?

enter image description here

答えて

0

ExpandableListView.OnGroupClickListenerを使用してください。

リスナーを実装し、それをクリックしたときに呼び出されるメソッドは次のとおりです。

void onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { 
    // int position and other parameters give you everything you need to know about the click 
} 

あなたも細かく制御したい場合は、実装することができ、リスナーExpandableListView.OnGroupCollapseListenerExpandableListView.OnGroupExpandListenerもあります。

、それを実装OnGroupClickListenerを実装するオブジェクトを宣言、または匿名クラスを作成するには:

ExpandableListView.OnGroupClickListener mListener = 
    new ExpandableListView.OnGroupClickListener({ 
     public void onGroupClick(ExpandableListView parent, View v, int groupPosition, long id){ 
      //handle whatever you want to do on the click in this method 
     } 
}); 

次に、あなたのフラグメントビューの内側からあなたExpandableListViewを取得する(あなたはおそらくそれをこれを行うことになるだろうではないことは)大丈夫です場合の方法は、私はちょうど、しかしここに推測している:

ExpandableListView listView = 
    (ExpandableListView) this.getView() 
    .findViewById(R.id.whatever_you_set_your_expandablelistview_id_to); 

そして最後に、あなたのExpandableListViewにリスナーを追加します。

listView.setOnGroupClickListener(mListener); 

グループがクリックされるたびにリスナーの "onGroupClick"が呼び出されます。おそらく、ExpandableListViewごとに1つのリスナーしか追加できないことに注意してください。 Also, be careful of Context leaks when using anonymous classes for listeners on views!

+1

もし私が間違っていれば訂正しますが、ユーザーがグループをクリックしたときにExpandableListViewのデフォルトのグループクリックを展開/折りたたむように変更しますか? – John

+0

いいえ、イベントリスナーが定義されているだけでイベントが発生したときにあなたに通知します*。 Viewが正常に動作するのを妨げるものではなく、イベントが発生したときに呼び出されるだけです。私はより詳細な答えを提供するよう編集しています。 –

+0

@ジョンが答えに例を追加しました。 –

関連する問題