2017-01-07 34 views
1

我有一个内部具有多个可展开项目的抽屉,例如“main1”(可展开项目)内部为“main2-1”,“main2-2”,“ main2-3“(展开项目)”main3-1“,”main3-2“,”main3-3“(普通项目)仅在展开项目内部展开一个项目而不会折叠

我想只让一个ExpansionItem在”main2“级别main2-1,2-1,2-3) 也在“main1”级别

我试过result.getAdapter().withOnlyOneExpandedItem(true);其中“result”是我正在使用的抽屉库 - 它不起作用cuz collapsing“main2 “级而不是扩大级别的第一项

此外,this方法不会在不同的扩张项目的第3个点击工作 - 我跟着个编码了日志记录,以确保应用程序进入它,但它不会倒塌前一个

if(previousExpandableItemPosition != position) { 
    result.getAdapter().collapse(previousExpandableItemPosition); 
    previousExpandableItemPosition = position; 
} 

回答

0

我做了我放在扩大项目我想要的onclick方法只具有其中的一个扩展,这里是帮助其他人

if (position != previousPosition && previousPosition != 0 && previousIdentifier != drawerItem.getIdentifier()) { // WithOnlyOneExpandableItem 
           IDrawerItem itemx = result.getAdapter().getItem(previousPosition); 
           if (itemx.isExpanded()) { 
            itemx.withIsExpanded(true); 
            result.updateItem(itemx); 
           } else { 
            if(previousPosition > position){ // user is going upward 
             itemx = result.getAdapter().getItem(previousPosition + result.getAdapter().getItem(position).getSubItems().size()); 
             if (itemx.isExpanded()) { 
              itemx.withIsExpanded(true); 
              result.updateItem(itemx); 
             }else{Log.i("ppppppppppppp", String.valueOf(previousPosition + (previousPosition - position)));} 

            }else if(previousPosition > position){ // user is going downward 
             itemx = result.getAdapter().getItem(previousPosition + (previousPosition 
               + result.getAdapter().getItem(previousPosition).getSubItems().size())); 
             if (itemx.isExpanded()) { 
              itemx.withIsExpanded(true); 
              result.updateItem(itemx); 
             }else{Log.i("ppppppppppppp", String.valueOf(previousPosition + (previousPosition - position)));} 
            } 
           } 
          } else if (previousPosition != 0 && previousIdentifier == drawerItem.getIdentifier()) { 
           //if the drawer item is collapsed after expanding then deselect it 
           EnterTimes++; 
           if(!result.getAdapter().getItem(position).isExpanded()){ 
            EnterTimes=1; 
           } 
           if(EnterTimes <2){ 
            result.getAdapter().getItem(position).withSetSelected(false); 
            result.updateItem(drawerItem); 
           } 
          } 
          previousIdentifier = (int) drawerItem.getIdentifier(); 
           previousPosition = position; 

而之前的onCreate int previousPosition = 0, previousIdentifier = 0;