5

Io uso un ExpandableListView nella mia applicazione Android e desidero eseguire un'azione se l'utente fa clic a lungo sull'elemento del gruppo, quindi ho definito un OnLongClickListener nell'estensione BaseExpandableListAdapter. L'ascoltatore funziona come previsto ma gli elementi figlio non si espandono più. Qualche idea?Android ExpandableListView listener per il gruppo lungo impedisce impedire

public class ConnectionAdapter extends BaseExpandableListAdapter { 
    ... 
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, 
          ViewGroup parent) { 
     // convertView is a LinearLayout 
     convertView.setOnLongClickListener(new OnLongClickListener() { 
      public boolean onLongClick(View v) { 
       // my action here 
       return true; 
      } 
     }); 
    } 
    ... 
} 

risposta

1

La ragione per cui il codice non sta elaborando ulteriormente eventuali altri eventi 'onClick' è perché si sta passando un 'vero' nel vostro ritorno. Se si indica che un evento è stato gestito, il sistema operativo smette di tentare di elaborare ulteriormente eventuali altri eventi. Per farlo elaborare questo evento, e anche espandere, quindi è necessario modificare il ritorno su falso anziché vero

+3

ho cercato di tornare falsa. Ma lo stesso problema persiste anche per me. Il gruppo non si espanderà dopo aver implementato onLongClicklistener per convertview –

+0

Ho lo stesso problema, non appena implemento un listener di clic lungo sull'elemento del mio gruppo, il breve clic (per espandere il gruppo) smette di funzionare ... qualsiasi aiuto è apprezzato. –

4

È possibile impostare setOnItemLongClickListener su expandablelistview. ExpandableListView.PACKED_POSITION_TYPE_GROUP è l'id di un gruppo, modificarlo in ExpandableListView.PACKED_TYPE_CHILD ed è possibile manipolare con longclicks sui child di gruppo.

Qualcosa del genere:

pager_income = (ExpandableListView) findViewById(R.id.income_scroll); 

    pager_income.setOnItemLongClickListener(new OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
      if (ExpandableListView.getPackedPositionType(id) == ExpandableListView.PACKED_POSITION_TYPE_GROUP) { 
       // Your code with group long click 

       return true; 
      } 

      return false; 
     } 
    }); 
Problemi correlati