6

ExpandableListView があり、グループをクリックしたときにグループ位置をログに記録したいと考えています。残念ながら、0 番目のグループをクリックしたかのように、以下のコードは常に 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);
...
}

何か案は?

4

4 に答える 4

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>

ExpandableListView を ScrollView に含めることはできません。

于 2016-04-01T13:30:29.720 に答える
1

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

そのように:

listView = (ExpandableListView) findViewById(R.id.expandableListView);
listView.setOnGroupExpandListener(new OnGroupExpandListener() {
    @Override
    public void onGroupExpand(int groupPosition) {
        Log.d(TAG, "pos " + groupPosition);
    }
});
于 2012-05-24T02:17:51.170 に答える
1

展開可能なリスト ビューがスクロール ビュー内にある可能性があります。ネストされたスクロールを持つことはできません。

于 2015-03-12T05:41:41.563 に答える
0
@Override
public Object getGroup(int groupPosition) {
    Log.i(TAG, "* getGroup : groupPosition =" + groupPosition);

    return categories[groupPosition];
}

を拡張BaseExpandableListAdapterすると、上記のオーバーライド メソッドが得られます。上記の Log out put には、クリックされたグループ番号が明確に表示されます。

私のコードでは、カテゴリはグループとして Expandable リストに渡すデータ セットを意味します。

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

@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
}

これは動作するコードであり、理解していただければ幸いです。

于 2012-05-24T03:09:44.553 に答える