ExpandableListView no reacciona y recibe ningún clic
Me encontré con varios problemas cuando intento insertar una lista expandible en una actividad existente (que no se deriva de ExpandalbleListActivity).
La lista se muestra como se describe en mi diseño XML, pero no reacciona cuando intento hacer clic / ampliarlo.
- Tipo de lista para almacenar tipos de datos Multipe
- Android QuickContactBadge con letras como Android Lollipop
- TreeMap a ArrayList Java
- Lista de todos los dispositivos Android con características
- Android: Cómo ocultar un elemento ListView
Para las pruebas i insertó un botón por encima de la lista y recibe el clic. La lista de sí mismo NO dice clickable = false.
Código para la lista expandible:
<ExpandableListView android:id="@+id/h_Zzwa_activity_listView" android:layout_width="match_parent" android:layout_height="wrap_content" android:groupIndicator="@color/transparent" android:clickable="true"> </ExpandableListView>
El código para inicializar la lista:
this.m_adapter = new HZzwaListAdapter(this, m_requests); listZzwa = (ExpandableListView) findViewById(R.id.h_Zzwa_activity_listView); listZzwa.setAdapter(this.m_adapter)
El adaptador (que se inicia y el grupo .. se llama)
public class HZzwaListAdapter extends BaseExpandableListAdapter { private List<HMyMessage> items; private Context myContext; public HZzwaListAdapter(Context context) { myContext = context; } public HZzwaListAdapter(Context context, List<HMyMessage> items) { myContext = context; this.items = items; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = (LayoutInflater) myContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.h_Zzwa_list_subitem, null); } HMyMessage message = items.get(childPosition); if (message != null) { TextView tvPlayerName = (TextView) convertView .findViewById(R.id.h_Zzwalistitem_info_signText); tvPlayerName.setText(message.info.getSign()); } return convertView; } @Override public int getChildrenCount(int groupPosition) { return 1; } @Override public Object getGroup(int groupPosition) { return null; } @Override public int getGroupCount() { return items.size(); } @Override public long getGroupId(int groupPosition) { return groupPosition; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = (LayoutInflater) myContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater .inflate(R.layout.h_machching_list_item, null); } // Get item and set it into the view HMyMessage plan = (HMyMessage) items.get(groupPosition); if (plan != null) { TextView pname = (TextView) convertView .findViewById(R.id.h_Zzwalistitem_pname); TextView pF = (TextView) convertView .findViewById(R.id.h_Zzwalistitem_pText); if (pname != null) { pname.setText(plan.requester.getName()); } if (pF != null) { pF.setText(plan.p + " unit "); } } return convertView; } @Override public boolean hasStableIds() { return false; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } @Override public Object getChild(int groupPosition, int childPosition) { // TODO Auto-generated method stub return null; } @Override public long getChildId(int groupPosition, int childPosition) { // TODO Auto-generated method stub return 0; } }
Incluso cuando establezco un listener para el evento click o listItemClick, nada sucede.
¿Por qué? Lo mismo funciona muy bien con una lista habitual: /
Gracias
- Cómo personalizar los elementos de la lista en un AlertDialog de Android
- OnItemClickListener (), cómo pasar los datos del elemento pulsado?
- Android: Obtención de la lista de aplicaciones del dispositivo - Muy lento
- Android: ¿Cómo poner un archivo de imagen de la tarjeta SD a HashMap con simpleadapter?
- Android: Cómo deshabilitar los elementos de la lista en la creación de la lista
- Android RecyclerView Scroll Bug
- cómo eliminar datos particulares de ArrayList <Integer> en android
- Cómo comprobar si un Array contiene un término específico - Android
Por favor, agregue el diseño de niño y grupo. Con listview, hay un problema similar que listview no reciba onItemClick
cuando el elemento de listview tiene botón . He encontrado este problema antes entonces debo implementar onclick para cada artículo en el adaptador. Revise este artículo ListView no responde a OnItemClickListener y problema 3414 ListView no recibe OnItemClick / OnItemLongClick para los artículos con el contenido clickable o focusable
EDIT: Poner android:focusable="false"
para la vista Button
o la vista EditText
.
Usted necesita utilizar los oyentes apropiados para una lista extensible … No son iguales que para una lista normal.
Ejemplo:
lv.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { // Your code for click action here. return true; } });
También hay un OnGroupClickListener similar.
Para obtener más información, consulte los documentos
Funcionó después de que creé un nuevo group.xml y lo usé en vez del existente
I usted está utilizando algunos componentes clickable en su opinión del padre (como la caja de cheque, ToggleButton, ImageButton …) entonces el acontecimiento del tecleo no es encendido.
Sólo puede establecer en su adaptador, en getGroupView
, haga clic en el oyente para convertirView.
Sé que esto es una vieja pregunta, pero recibí el mismo problema de mi programa últimamente. My ExpandableListView no respondió y haga clic en eventos para los clics de grupo. Así que en lugar de implementar ExpandableListView.OnItemClickListener, implementé ExpandableListView.OnGroupClickListener y funcionó como encanto. Espero que esto ayude a alguien que recieves este problema más adelante.
Añadir android:descendantFocusability="blocksDescendants"
al diseño de base de lo que esté inflando que ya no está recibiendo los eventos táctiles como debería.
- Qué codificar para que la notificación se pegue hasta que la música deje de jugar
- Abra la cámara usando la intención