android expandablelistview onclicklistener

android - ExpandibleListView el escucha de clics secundarios no se dispara



expandablelistview onclicklistener (6)

Asegúrese de anular el método isChildSelectable de su adaptador de lista expandible y devuelva verdadero, así:

public class MyExpandableListAdapter extends BaseExpandableListAdapter { ... @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } ... }

No estoy seguro de por qué mi onChildClick no está disparando. Todo funciona perfectamente, excepto que cuando se toca uno de los elementos secundarios, no pasa absolutamente nada. De lo contrario, los grupos expandibles funcionan como se espera.

He rastreado esto de nuevo a mi uso de la casilla de verificación en el archivo xml secundario. Cuando elimino esta casilla de verificación, onChildClick se activa como se espera. Pero necesito esta casilla de verificación para la funcionalidad de esta actividad. ¿Qué estoy haciendo mal? ¡Gracias!

public class MySettings extends Activity { private ExpandListAdapter expAdapter; private ArrayList<ExpandListGroup> expListItems; private ExpandableListView expandableList; private String client; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_settings); expandableList = (ExpandableListView) findViewById(R.id.expandable_list); expListItems = SetStandardGroups(); //works fine - can show code if needed expAdapter = new ExpandListAdapter(MySettings.this, expListItems); expandableList.setAdapter(expAdapter); expandableList.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { //Nothing here ever fires System.err.println("child clicked"); Toast.makeText(getApplicationContext(), "child clicked", Toast.LENGTH_SHORT).show(); return true; } }); }

Aquí están los archivos xml:

activity_my_settings.xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:background="@drawable/background" > <ImageView android:id="@+id/logo" android:layout_marginTop="5dip" android:layout_alignParentTop="true" android:layout_width="wrap_content" android:layout_height="70dp" android:layout_gravity="left" android:contentDescription="@string/blank" android:src="@raw/logo" > </ImageView> <TextView android:id="@+id/my_settings" android:textColor="#000000" android:layout_below="@id/logo" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:gravity="center" android:text="@string/my_settings" android:textSize="30sp" android:textStyle="bold" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_below="@id/my_settings" > <ExpandableListView android:id="@+id/expandable_list" android:scrollingCache="false" android:layout_marginTop="20dip" android:layout_height="wrap_content" android:layout_width="match_parent" /> </LinearLayout> </RelativeLayout>

expandlist_group_item.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="55dip" android:background="#FF7C7C7C" > <TextView android:id="@+id/group_header" android:layout_marginLeft="40dp" android:layout_width="fill_parent" android:layout_height="40dp" android:gravity="center_vertical" android:textColor="#000000" android:textSize="22sp" /> </LinearLayout>

expandlist_child_item.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="55dip" android:orientation="horizontal" > <CheckBox android:id="@+id/check_box" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/expand_list_item" android:paddingLeft="10dp" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="@dimen/smart_finder_settings_font_size" android:textColor="#FFFFFF" /> </LinearLayout>


Creo que tienes que usar onItemClickListener y usar el parámetro pasado para ver si es un clic de grupo o no


Entiendo. Todo lo que tenía que hacer era agregar

android:focusable="false"

dentro de la sección CheckBox de mi archivo expandlist_child_item.xml.

Espero que esto ayude a alguien.


La casilla de verificación no debe ser enfocable y seleccionable.

<CheckBox android:focusable="false" android:clickable="false" android:focusableInTouchMode="false" android:id="@+id/expandedListItem" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingLeft="?android:attr/expandableListPreferredChildPaddingLeft" android:paddingTop="10dp" android:paddingBottom="10dp" />


La casilla de verificación no debe ser enfocable, ni hacer clic.


Se ve bien, todavía:

  1. Verifique que no haya configurado una escucha de clics en ninguna vista principal de listview.

  2. Compruebe que isChildSelectable() del adaptador devuelve true. También areAllItemsEnabled() debe devolver true.