5

Uso un ExpandableListView en mi aplicación Android y deseo realizar una acción si el usuario hace clic en el elemento de grupo, por lo que definí OnLongClickListener en mi extensión BaseExpandableListAdapter. El oyente funciona como aspectado pero los elementos secundarios ya no se expanden. ¿Algunas ideas?Android ExpandableListView oyente de clic de grupo largo prevenir expand

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; 
      } 
     }); 
    } 
    ... 
} 

Respuesta

1

La razón de que el código no está procesando más cualquier otro evento 'onclick' se debe a que usted está pasando un 'verdadero' en su declaración. Si indica que se manejó un evento, el sistema operativo deja de intentar seguir procesando otros eventos. Para que procese ESTE evento y también lo expanda, debe cambiar el resultado en falso en lugar de verdadero

+3

He intentado volver falsa. Pero el mismo problema persiste también para mí. El grupo no se expandirá después de implementar onLongClicklistener para la vista convertida –

+0

Tengo el mismo problema, tan pronto como implemente un escucha de clic largo en mi elemento de grupo, el clic corto (para expandir el grupo) deja de funcionar ... cualquier ayuda apreciada. –

4

Puede establecer setOnItemLongClickListener en su vista de lista desplegable. ExpandableListView.PACKED_POSITION_TYPE_GROUP es la identificación de un grupo, cámbielo a ExpandableListView.PACKED_POSITION_TYPE_CHILD y puede manipular con longclicks en grupos secundarios.

Algo así:

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; 
     } 
    }); 
Cuestiones relacionadas