2017-01-07 28 views
1

У меня есть выдвижной ящик с несколькими расширяемыми элементами внутри друг друга, для примера «main1» (расширяемый элемент) внутри него «main2-1», «main2-2», main2-3 "(расширяемый элемент) внутри них" main3-1 "," main3-2 "," main3-3 "(обычный элемент)Разверните один элемент только внутри расширяемого элемента без свертывания

Я хочу, чтобы только один ExpandedItem находился на уровне« main2 »(main2-1, 2-1, 2-3) также на уровне «main1»

Я попытался result.getAdapter().withOnlyOneExpandedItem(true); где «результат» это библиотека ящика я использую - это не работает Потому что рушится «main2 "вместо расширения первого элемента уровня

Кроме того, this метод не работает в 3-клик различных расширяющихся элементов - я последовал й код вверх с Logging, чтобы убедиться, что приложение входит в него, но он не развалился предыдущий

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;