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;
            }
        });

猜你喜欢

转载自www.cnblogs.com/crazy-wang-android/p/9257174.html