Intereting Posts

ExpandableListView дочерний кликер-прослушиватель не работает

Не уверен, почему мой onChildClick не стреляет. Все работает отлично, за исключением того, что при прослушивании одного из дочерних элементов абсолютно ничего не происходит. В противном случае расширяемые группы работают так, как ожидалось.

Я проследил это до использования флажка в дочернем xml-файле. Когда я удаляю этот флажок, onChildClick срабатывает, как ожидалось. Но мне нужен этот флажок для функциональности этой деятельности. Что я делаю неправильно? Благодаря!

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

Вот 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> 

Solutions Collecting From Web of "ExpandableListView дочерний кликер-прослушиватель не работает"

Обязательно переопределите метод isChildSelectable вашего расширяемого адаптера списка и верните true, например:

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

Я понял. Все, что мне нужно было сделать, это добавить

 android:focusable="false" 

В разделе CheckBox моего файла expandlist_child_item.xml.

Надеюсь, это поможет кому-то.

Похоже, все в порядке:

  1. Убедитесь, что вы не установили прослушиватель кликов для любого родительского представления listview.

  2. Проверьте, что isChildSelectable() адаптера возвращает true. Также areAllItemsEnabled() должен возвращать true.

Флажок не должен быть настраиваемым, а не кликабельным.

Я думаю, что вам нужно использовать onItemClickListener и использовать переданный параметр, чтобы увидеть, является ли он щелчком группы или нет

Флажок не должен быть правдоподобным и удобным.

 <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" />