1

大家好我在这个主题上搜索了很多仍然无法解决这个问题。我在android中很新。我没有在我的ExpandableListView中获得Parent的位置,我得到的是childPosition的值而不是groupposition。

                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

已编辑: 您需要 onChildClick 中有两个位置 - parentchild。父定义组的位置,子定义组内的位置。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 回答