【问题标题】:Three level expandable list view collapse all but selected in second group三级可扩展列表视图折叠所有但在第二组中选择
【发布时间】:2014-03-02 12:34:52
【问题描述】:

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

我有一个可展开的列表视图,每个孩子都是另一个可展开的列表视图。我想要做的是在展开第二个列表的一项以折叠所有其他项时。

m 是第一个可扩展的可扩展列表视图子视图。

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

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

【问题讨论】:

  • 嗨,pam,你的问题解决了吗,我现在也在为同样的问题苦苦挣扎..你能发帖吗..

标签: android expandablelistview


【解决方案1】:

我最终做的是一个带有项目的 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;
        }
    });

【讨论】:

    【解决方案2】:
    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;
    
        }
    

    【讨论】:

      猜你喜欢
      • 2013-07-09
      • 1970-01-01
      • 1970-01-01
      • 2019-02-17
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多