1

こんにちは、私はこのトピックについて多くのことを検索しましたが、まだこれを解決できません.私はAndroidでかなり新しいです.ExpandableListViewで親の位置を取得していません.childPositionの値を取得していますが、グループ位置は取得していません.

                catlist = (ExpandableListView) findViewById(R.id.category_list);
            final ExpandableListAdapter expListAdapter = new ExpandableListAdapter(
                    CatergoryActivity.this, groupList, expandableCategories);
            catlist.setAdapter(expListAdapter);

            catlist.setOnChildClickListener(new OnChildClickListener() {

                @Override
                public boolean onChildClick(ExpandableListView parent,
                        View v, int groupPosition, int childPosition,
                        long id) {
                    Intent nextact = new Intent(CatergoryActivity.this,
                            MobileActivity.class);

                    String childPosition = expListAdapter.getChild(groupPosition, childPosition);

                    System.out.println("childPosition------------------------>>>>>>>>>>>>"+childPosition);


                    nextact.putExtra("locId", locId);
                    nextact.putExtra("childpos",
                            childList.get(childPosition));
                    nextact.putExtra("grouppos", gruopPosition);

                    startActivity(nextact);
                    return false;
                }
            });
4

1 に答える 1

0

onChildClickの API リファレンスの説明によると、既に親グループの位置を取得しています。

public abstract boolean onChildClick (ExpandableListView parent, View v, int groupPosition, int childPosition, long id) API レベル 1 で追加

この展開可能なリストの子がクリックされたときに呼び出されるコールバック メソッド。

パラメーター

  • parent - クリックが発生した ExpandableListView
  • v -クリックされた展開可能なリスト/ListView 内のビュー
  • groupPosition - クリックされた子を含むグループ位置
  • childPosition - グループ内の子の位置
  • id - クリックされた子の行 ID

クリックが処理された場合は True を返します

EDITED: 必要な onChildClick には、parentchildの 2 つの位置があります。親はグループの位置を定義し、子はグループ内の位置を定義します。adapter.getChild(groupPos, childPos) は、指定された子アイテムに関連するオブジェクトを返します。

    catlist.setOnChildClickListener(new OnChildClickListener() {

            @Override
            public boolean onChildClick(ExpandableListView parent,
                    View v, int groupPosition, int childPosition,
                    long id) {

                System.out.println("childPosition: " + childPosition);
                System.out.println("groupPosition: " + groupPosition);

                // only if you need related data
                Object itemData = expListAdapter.getChild(groupPosition, childPosition);


            }
        });

このitemData値を取得する必要がある場合は、アダプタにgetChild()メソッドを実装する必要があります。

于 2013-07-31T08:18:23.660 に答える