Elenco di liste espandibile con elementi figlio a radice

Sto cercando di fare una list con la seguente struttura:

Listview -> child -> child -> group -> child -> child -> child 

Come dovrei andare a comprimere questo?

  • Attributi personalizzati nei frammenti Android
  • Perché la compressione PNG è molto più lenta di JPEG su Android?
  • Sync di Gradley di progetto di Android Wear non riesce
  • android custom schema url ..?
  • Avviare Android Service dopo each 5 minuti
  • Cambiare la lingua dell'applicazione android
  • Devo convincere un gruppo ad agire come un bambino o è ansible farlo correttamente così:

    Ho un object MenuRow

     public class MenuRow { public String title; public MenuRow(String title) { this.title = title; } } 

    allora ho MenuGroup e MenuChild che estendono MenuRow, questo mi permette di fare quanto segue:

      ArrayList<MenuRow> menu = new ArrayList<MenuRow>(); menu.add(new MenuChild("row 1")); menu.add(new MenuChild("row 2")); MenuGroup group = new MenuGroup("group"); MenuChild groupChild = new MenuChild("group child"); group.items.add(groupChild); menu.add(group); 

    Non riesco a capire come dovrei passare alla mia attività nell'adattatore.

     @Override public Object getChild(int groupPosition, int childPosition) { MenuRow row = menu.get(groupPosition); if (row instanceof MenuGroup) { ArrayList<MenuChild> chList = ((MenuGroup) row).getItems(); } else{ return null; } return chList; } 

    questo metodo ad esempio non è realmente adatto alla mia soluzione. Come devo andare a cercare di realizzare il mio objective? devo usare un adattatore diverso? (la mia attuale estensione di BaseExpandableListAdapter)

  • Come faccio a rilevare un clic di annullamento della window di dialogo data-picker?
  • Come mostrare la schermata fullscreen imageView su ClickView?
  • Come evitare il controllo automatico del guadagno con AudioRecord?
  • Rimuova l'attività come lanciatore predefinito
  • WebView ricaricabile quando il frammento in ViewPager viene mantenuto da BackStack
  • Android - app whicanvasbel
  • One Solution collect form web for “Elenco di liste espandibile con elementi figlio a radice”

    Ho già lavorato con un simile problema e qui è l'approccio che ho usato:

    E ha creato un object di class da utilizzare come elemento di menu sinistro per entrambi i bambini e le viste dei genitori

     public class LeftMenuItem { int mTextId; int mImageId; //Action to be taken after clicking on the item String mAction; public LeftMenuItem(int textId, int imageId,String action) { this.mTextId = textId; this.mImageId = imageId; this.mAction = action; } public int getTextId() { return mTextId; } public void setTextId(int textId) { this.mTextId = textId; } public int getImageId() { return mImageId; } public void setImageId(int imageId) { this.mImageId = imageId; } public String getAction() { return mAction; } public void setAction(String action) { this.mAction = action; } } 

    e creato il mio articolo di elenco espandibile che contiene un genitore leftmenuitem e arrayslist di bambini se trovato

     public class ExpandableLeftMenuItem { LeftMenuItem mParentItem; ArrayList<LeftMenuItem> mChildItems; public ExpandableLeftMenuItem(LeftMenuItem parentItem, ArrayList<LeftMenuItem> childItems) { this.mParentItem = parentItem; this.mChildItems = childItems; } public LeftMenuItem getParentItem() { return mParentItem; } public void setParentItem(LeftMenuItem parentItem) { this.mParentItem = parentItem; } public ArrayList<LeftMenuItem> getChildItems() { return mChildItems; } public void setChildItems(ArrayList<LeftMenuItem> childItems) { this.mChildItems = childItems; } } 

    Ho quindi gestito ExpandableListView onChildClickListener e onGroupClickListener come seguendo

     // In Case of clicking on an item that has children, then get the action // of this child item and show the screen with this action mLeftMenu.setOnChildClickListener(new OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View view, int groupPosition, int childPosition, long id) { if (!mLeftMenuItems.get(groupPosition).getChildItems().isEmpty()) { String action = ((LeftMenuItem) mLeftMenuItems.get(groupPosition).getChildItems().get(childPosition)).getAction(); setSelectedSection(action); handleLeftMenuClick(action); return true; } return false; } }); // In Case of clicking on an item that has no children, then get the // action of this item and show the screen with this action mLeftMenu.setOnGroupClickListener(new OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView parent, View view, int groupPosition, long id) { if (mLeftMenuItems.get(groupPosition).getChildItems().isEmpty()) { String action = ((LeftMenuItem) mLeftMenuItems.get(groupPosition).getParentItem()).getAction(); setSelectedSection(action); handleLeftMenuClick(action); // Return true to stop parent from expanding or collapsing group return true; } // Return true to handle click as parent by expanding or collapsing group return false; } }); 

    Poi per quanto segue

     ExpandableListView: group group group child child group child child 

    Verrà creato le seguenti voci di menu:

     ArrayList<ExpandableLeftMenuItem> mMenuItems = new ArrayList<ExpandableLeftMenuItem>(); mMenuItems.add(new ExpandableLeftMenuItem(new LeftMenuItem(parent1Text,parent1Image,action1),new ArrayList<LeftMenuItem>())); mMenuItems.add(new ExpandableLeftMenuItem(new LeftMenuItem(parent2Text,parent2Image,action2),new ArrayList<LeftMenuItem>())); ArrayList<LeftMenuItem> parent3Children = new ArrayList<LeftMenuItem>(); parent3Children.add(new LeftMenuItem(parent3Child1TextId,parent3Child1ImageId,parent3Child1action)); parent3Children.add(new LeftMenuItem(parent3Child2TextId,parent3Child2ImageId,parent3Child2action)); mMenuItems.add(new ExpandableLeftMenuItem(new LeftMenuItem(parent1Text,parent1Image,action1),parent3Children )); 

    In questo modo, hai gestito entrambi i bambini e le posizioni di gruppo per intraprendere diverse azioni.

    Spero che questo aiuti.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.