ExpandableListView 遇到的问题
最近在写一款电商类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; } });
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步