【问题标题】:Expanded listview required to expand the row one at a time一次展开一行需要展开的列表视图
【发布时间】:2012-06-21 05:21:46
【问题描述】:

我在我的项目中使用展开的列表视图,我需要一次只展开一个列表视图,即我展开一个项目,当尝试展开列表中的另一个项目时,我展开的前一个项目必须折叠并且新的单击的项目必须展开,将不胜感激答案,我正在尝试使用下面的 sn-p 作为 on click 监听器..

 convertViewpar.setOnClickListener(new OnClickListener() {

    int i=1;
    public void onClick(View v) {
    i = i++;
    int[] expds = new int[100];
    expds[0]=0;
    expds[i] = groupPosition;
    if(expds[i]==expds[i-1]){
    if(isExpanded)
    expandlist.collapseGroup(i);
    else
    expandlist.expandGroup(i);
    }else{
    expandlist.collapseGroup(i-1);
     if(isExpanded)
        expandlist.collapseGroup(i);
    else
    expandlist.expandGroup(i);

    }


}
}); 

【问题讨论】:

    标签: android android-listview expandablelistview


    【解决方案1】:

    在类级别和 onCreate 方法中添加实现 OnGroupExpandListener

        listView.setOnGroupExpandListener(this);
    

    并添加此方法

    /*
     * (non-Javadoc)
     * 
     * @see
     * android.widget.ExpandableListView.OnGroupExpandListener#onGroupExpand
     * (int)
     */
    public void onGroupExpand(int groupPosition) {
        int len = expListAdapter.getGroupCount();
    
        for (int i = 0; i < len; i++) {
            if (i != groupPosition) {
                listView.collapseGroup(i);
            }
        }
    }
    

    它肯定会起作用。

    【讨论】:

    • @najibputhawala .... 不用担心记录的数量。它绝对适用于任意数量的记录。
    【解决方案2】:

    试试这个解决方案。使用 GroupClcik 侦听器并检查当前单击了哪个位置并折叠所有其他组,

     expList.setOnGroupClickListener(new OnGroupClickListener() {
    
            public boolean onGroupClick(ExpandableListView arg0, View arg1, int arg2,
                    long arg3) {
                int count =  yourAdapter.getGroupCount();
                for (int i = 0; i <count ; i++)
                  if(arg2!=i)
                    exp.collapseGroup(i);
                  else
                      exp.expandGroup(i);
                return false;
            }
        });
    

    或者按照这个解决方案,Programmatically collapse a group in ExpandableListView

    @Override
    public void onGroupExpanded(int groupPosition){
        //collapse the old expanded group, if not the same
        //as new group to expand
        if(groupPosition != lastExpandedGroupPosition){
            accordion.collapseGroup(lastExpandedGroupPosition);
        }
    
        super.onGroupExpanded(groupPosition);           
        lastExpandedGroupPosition = groupPosition;
    }
    

    【讨论】:

      猜你喜欢
      • 2014-12-08
      • 1970-01-01
      • 2020-01-17
      • 1970-01-01
      • 2023-01-27
      • 1970-01-01
      • 1970-01-01
      • 2016-06-01
      • 2011-10-14
      相关资源
      最近更新 更多