2017-01-07 68 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;