繁体   English   中英

三级可展开列表视图会折叠,但在第二组中除外

[英]Three level expandable list view collapse all but selected in second group

尝试折叠嵌套可展开列表视图中的所有组时遇到问题。

我有一个可扩展的列表视图,每个孩子都是另一个可扩展的列表视图。 我想做的是将第二个列表中的一个扩展到其他所有列表。

m是第一个可扩展项的expandablelistview子级。

@Override
public View getChildView(int groupPosition, int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) {

    MetrobusStation station = lines.get(groupPosition).getStations()[childPosition];
    final MetrobusStationExpandable m = new MetrobusStationExpandable(activity);
    MetrobusStationAdapter mAdapter = new MetrobusStationAdapter();


    mAdapter.setStation(station);
    mAdapter.setLinea(this.lines.get(groupPosition));
    mAdapter.setExpandable(m);

    m.setGroupIndicator(activity.getResources().getDrawable(R.drawable.arrow_down_w));
    activity.setGroupIndicatorToRight(m);

    m.setAdapter(mAdapter);

    m.setOnChildClickListener(new OnChildClickListener() {

        @Override
        public boolean onChildClick(ExpandableListView parent, View v,
                int groupPosition, int childPosition, long id) {

            Log.i("click at child",String.valueOf(childPosition));
            parent.expandGroup(groupPosition);
            return false;
        }
    });

    exps.put(groupPosition, m);

    return m;
}

这段代码没有记录“点击孩子”,点击时没有输入,有什么想法吗?

我最终要做的是添加一个带有项的HashMap,并添加了像这样的onclick:

private HashMap<String, MetrobusStationExpandable> exps = new HashMap<String,                MetrobusStationExpandable>();
            MetrobusStation station = lines.get(groupPosition).getStations()[childPosition];
    final MetrobusStationExpandable m = new MetrobusStationExpandable(activity);

    mAdapter.setStation(station);
    mAdapter.setLinea(this.lines.get(groupPosition));
    mAdapter.setExpandable(m);m.setGroupIndicator(activity.getResources().getDrawable(R.drawable.arrow_down_w));
    m.setAdapter(mAdapter);
    m.setOnGroupClickListener(new OnGroupClickListener() {
        @Override
        public boolean onGroupClick(ExpandableListView parent, View v,
                int groupPosition, long id) {
            for (String clave: exps.keySet()) {
                try { exps.get(clave).collapseGroup(0); }catch(Exception e) {}
            }
            m.expandGroup(groupPosition);
            return true;
        }
    });
This one worked for me. Take the import and field instance variable. 

import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.ExpandableListView.OnGroupClickListener;

public class MyDialog extends Dialog implements
        OnGroupClickListener{

  private int lastExpandedGroupPosition = -1;


    @Override
    public boolean onGroupClick(ExpandableListView parent, View v,
            int groupPosition, long id) {
        parent.expandGroup(groupPosition);      

        if (parent.isGroupExpanded(groupPosition)) {
            parent.collapseGroup(groupPosition);
        } else {
           parent.expandGroup(groupPosition);
        }

        return false;
    }



       public void onGroupExpanded(int groupPosition) {

            if (groupPosition != lastExpandedGroupPosition) {
                expandableListView.collapseGroup(lastExpandedGroupPosition);
            }

            lastExpandedGroupPosition = groupPosition;

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM