我有一个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);
...
}
有什么想法吗?
答案 0 :(得分: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。
答案 1 :(得分:1)
使用侦听器OnGroupExpandListener,onGroupExpand方法的param是ExpandableListView上组的位置。
就像那样:
listView = (ExpandableListView) findViewById(R.id.expandableListView);
listView.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
Log.d(TAG, "pos " + groupPosition);
}
});
答案 2 :(得分:1)
您的可展开列表视图可能位于滚动视图中。你不能嵌套滚动。
答案 3 :(得分:0)
@Override
public Object getGroup(int groupPosition) {
Log.i(TAG, "* getGroup : groupPosition =" + groupPosition);
return categories[groupPosition];
}
扩展BaseExpandableListAdapter
时,您将获得上述覆盖方法。上面的Log out put清楚地显示了点击的组号。
在我的代码中,类别表示我作为组传递给可扩展列表的数据集。
您将有另一个覆盖方法调用;
@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
}
这是一个有效的代码,希望你能理解它。