最近在写一款电商类APP 购物车部分用ExpandableListView来写,在此记录一下遇到的问题
1.ExpandableListView的展开与关闭
expandableListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { return true;//返回true,表示可展开 } });
2.ExpandableListView点击父布局时不关闭
父布局中包含了CheckBox Button ImageButton等控件,占用了焦点
解决办法 在占用焦点的控件中加入代码
android:clickable="false" android:focusable="false" android:focusableInTouchMode="false"
3ExpandableListView子布局点击事件不响应
在子布局中存在CheckBox Button ImageButton等控件,占用了焦点
解决办法
android:clickable="false" android:focusable="false" android:focusableInTouchMode="false"
在Adapter中设置
//是否响应子列表点击事件 @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true;//true表示子列表可以点击 false表示不可点击 }
4.ExpandableListView长按监听
在adapter中的getGroupView()方法中
convertView.setTag(R.id.tv_hj, groupPosition);//tv_hj 此类中的成员变量 convertView.setTag(R.id.tv_gl, -1);//tv_gl此类中的成员变量
在adapter中的getChildView()方法中
convertView.setTag(R.id.tv_hj, groupPosition);
convertView.setTag(R.id.tv_gl, childPosition);
在类中
elvView.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { int groupPos = (Integer) view.getTag(R.id.tv_hj); int childPos = (Integer) view.getTag(R.id.tv_gl); if(childPos == -1){//长按父控件 MsgTools.toast(getActivity(),"点击了父"+groupPos,"s"); }else{//长按子控件 MsgTools.toast(getActivity(),"点击了子"+childPos,"s"); } return true; } });