2013-02-07 6 views
6

Ho un ExpandableListView e ho bisogno di impostare un determinato gruppo (groupPosition è noto e sempre lo stesso) per essere non espandibile e basta avviare un nuovo Activity quando si fa clic. C'è un metodo per farlo?android ExpandableListView - imposta il gruppo su non espandibile

UPDATE

ho anche bisogno di un solo gruppo per essere ampliato in un momento, e provato la seguente (ma questo non funziona correttamente):

getExpandableListView().setOnGroupClickListener(
      new OnGroupClickListener() { 
       @Override 
       public boolean onGroupClick(ExpandableListView parent, 
         View v, int groupPosition, long id) { 
        if (groupPosition == 1) { 
         Toast.makeText(getApplicationContext(), "TEST", 
           Toast.LENGTH_SHORT).show(); 
        } else if (groupPosition != lastExpandedGroupPosition) { 
         getExpandableListView().collapseGroup(
           lastExpandedGroupPosition); 
        } else 
         getExpandableListView().expandGroup(groupPosition); 
        lastExpandedGroupPosition = groupPosition; 

        return true; 
       } 
      }); 

risposta

17

Questo farà il trucco - check-in onGroupClick per il gruppo che si desidera gestire appositamente, ritorno vero per restituisce false per tutto ciò che desideri venga gestito dall'azione predefinita (espandi/comprimi)

mExpandableListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { 
     public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { 
      if(groupPosition == 2) { 
       Toast.makeText(mContext, "Group 2 clicked", Toast.LENGTH_LONG).show(); 
       return true; 
      } else 
       return false; 
     } 
    }); 
+0

modo davvero semplice per risolvere il problema. Grazie – Droidman

+0

questo ha funzionato. grazie :) – Bhupinder

+0

grazie, felice codifica :) –

2

È possibile utilizzare OnGroupClickListener per ExpandableListView per limitare i clic di gruppo.

Aggiornato

private int previousGroupPosition = -1; 
private boolean isDoubleTap = false;  

expLv.setOnGroupClickListener(new OnGroupClickListener() 
{ 
    @Override 
    public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) 
    { 
     if(previousGroupPosition != -1) 
      expLvTodoCategories.collapseGroup(previousGroupPosition); 

     if(previousGroupPosition != groupPosition || isDoubleTap) 
     { 
      isDoubleTap = false; 
      previousGroupPosition = groupPosition; 
      if(groupPosition == 1) 
      { 
       //Start Activity 
      } 
      else 
      { 
       expLv.expandGroup(groupPosition); 
      } 
     } 
     else 
      isDoubleTap = true; 

     return true; 
    } 
}); 

provare il codice di cui sopra, può essere utile ..

+0

Ho bisogno di un solo gruppo da espandere alla volta. Lo faccio nel metodo onGroupExpand() e l'utilizzo del codice impedisce che funzioni correttamente. Ho aggiornato la mia domanda – Droidman

+0

Ho aggiornato il codice, controllo una volta che sarà in grado di espandere anche un gruppo alla volta. – Santhosh

+0

upvote, grazie per il vostro aiuto – Droidman