2012-04-09 20 views
5

私はExpandableListViewを持っており、グループをクリックするとgrouppositionを記録したいと思います。残念ながら、以下のコードは、0番目のグループをクリックした場合のように、常に0を返します。Android ExpandableListViewグループの位置は常に0

exList.setOnGroupClickListener(new OnGroupClickListener() { 

    @Override 
    public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { 
      groupPosition = ExpandableListView.getPackedPositionGroup(id); 

      Log.i("group position", groupPosition + ""); 
      return false; 
    } 

    }); 

私はまた、右の作品グループとチャイルズにlongclicklistenerを持っている:

exList.setOnItemLongClickListener(new OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
      if (ExpandableListView.getPackedPositionType(id) == ExpandableListView.PACKED_POSITION_TYPE_CHILD) { 
       groupPosition = ExpandableListView.getPackedPositionGroup(id); 
... 
} 

任意のアイデア?

+0

ExpandableListViewにカスタムアダプタを使用していますか? – Cata

+0

はい。他のリスナーは正しく動作します – erdomester

+0

OK、getItemメソッドとgetItemIdメソッドが有効な値を返すことを確認してください。カスタムアダプタではこのアダプタを見てくださいhttp://developer.android.com/resources/ – Cata

答えて

0

リスナーのOnGroupExpandListenerを使用します。メソッドのパラメータonGroupExpandは、ExpandableListViewのグループの位置です。そのような

listView = (ExpandableListView) findViewById(R.id.expandableListView); 
listView.setOnGroupExpandListener(new OnGroupExpandListener() { 
    @Override 
    public void onGroupExpand(int groupPosition) { 
     Log.d(TAG, "pos " + groupPosition); 
    } 
}); 
0
@Override 
public Object getGroup(int groupPosition) { 
    Log.i(TAG, "* getGroup : groupPosition =" + groupPosition); 

    return categories[groupPosition]; 
} 

あなたがBaseExpandableListAdapterを拡張するとき、あなたは上記のオーバーライドメソッドを取得します。上記のログアウトは、クリックされたグループ番号を明確に表示します。

私のコードでは、カテゴリは、私がグループとして展開可能なリストに渡しているデータセットを意味します。

もう1つのオーバーライドメソッド呼び出しがあります。

@Override 
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { 
... 
} 

この方法では、次のように呼び出すことができます。

if(getGroup(groupPosition).toString().equals("GroupName")){ 
    //Do what even you like in for the clicked group 
} 

これは動作するコードであり、わかりやすいものです。

1

拡張リストビューはスクロールビュー内にある可能性があります。ネストされたスクロールはできません。

+0

ありがとう!私はこれが必要でした。私は間違っていることを理解できませんでした。私はこの場合でした。 – sunlover3

+1

お手伝いして嬉しいです!! :) – navalkishoreb

3

は、レイアウト

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 


    <ExpandableListView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</LinearLayout> 

のためにあなたがScrollViewにExpandableListViewを持つことはできませんあなたがこれを持っていることを確認してください。

関連する問題