Intereting Posts
Ошибка: выполнение выполнено для задачи ': android: transformClassesAndResourcesWithProguardForRelease' Службы Google Play Game – невозможно войти в систему ImageView без растягивания изображения Для библиотек поддержки Android Material, где я могу найти CardView и RecyclerView? Принуждение Renderscript для работы на процессоре или графическом процессоре (Atleast для настройки производительности) Scrollview уменьшает вид снизу в диалоге Как добавить пакет java.awt.image в Android Добавить в файл android Robolectric with Gradle: Ресурсы не найдены Предупреждение proguard: конфигурация сохраняет точку входа … но не класс дескриптора Как вращать выделение с включенным сглаживанием Диалоговое окно Android Image / Popup того же размера, что и изображение, и без рамки Преобразование приложения Android из бесплатной / платной модели в платную разблокировку в приложении Как проверить существование файла в телефонном справочнике с телефонной связью Невозможно преобразовать файл android.support.v4.app.Fragment в android.app.Fragment

Android ExpandableListView не расширяется / не изменяется

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

Первая часть работает отлично (отображает список курсов), проблема в том, что список не доступен для кликов, то есть он не расширяется.

Теперь я определил следующее:
1. getChildView никогда не вызывается (отладчик никогда не останавливается в точке останова)
2. Есть данные для детей, так как это те же данные, которые используются для групповой работы, которая работает нормально.

Я также попытался установить onGroupClickListener, который никогда не вызывался, поэтому я удалил его снова.

Мой код:

Маршрут заголовка группы:

<TextView android:id="@+id/CourseName" android:layout_width="0dp" android:layout_height="wrap_content" android:gravity="bottom" android:text="CourseName" android:layout_weight="7" android:layout_marginRight="25dp" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/CourseDate" android:layout_width="0dp" android:layout_height="wrap_content" android:gravity="bottom" android:layout_weight="3" android:text="CourseDate" /> <CheckBox android:id="@+id/checkBox" style="?android:attr/starStyle" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" /> </LinearLayout> 

Макет child_row:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="Button" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/button1" android:text="Button" /> <TextView android:id="@+id/phases" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:gravity="center" android:layout_below="@+id/button1" android:text="phases:" /> <TextView android:id="@+id/info" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/phases" android:gravity="center" android:text="information:" /> </RelativeLayout> 

Макет деятельности:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/sportName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:gravity="center" android:text="Sport Name" android:textAppearance="?android:attr/textAppearanceLarge" android:textSize="@dimen/profile_title" /> <RatingBar android:id="@+id/ratingBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:numStars="5" android:stepSize="1" android:layout_centerInParent="true" /> <ExpandableListView android:id="@+id/expandableListView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/sportName" > </ExpandableListView> </RelativeLayout> 

Адаптер java:

 package ch.unibe.unisportbern.views.details; import java.util.ArrayList; import com.example.unisportbern.R; import ch.unibe.unisportbern.support.Course; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseExpandableListAdapter; import android.widget.TextView; public class SportsAdapter extends BaseExpandableListAdapter { private Context context; private ArrayList<Course> courseList; public SportsAdapter(Context context, ArrayList<Course> courseList) { this.context = context; this.courseList = courseList; } @Override public Object getChild(int index, int stub) { return courseList.get(index); } @Override public long getChildId(int index, int stub) { return stub; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { if (convertView == null){ LayoutInflater inflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.child_row, null); } TextView phases = (TextView) convertView.findViewById(R.id.phases); TextView info = (TextView) convertView.findViewById(R.id.info); phases.setText("phases:\n" + courseList.get(groupPosition).getPhases()); info.setText(courseList.get(groupPosition).getInformation()); return convertView; } @Override public int getChildrenCount(int groupPosition) { return 1; } @Override public Object getGroup(int groupPosition) { return courseList.get(groupPosition); } @Override public int getGroupCount() { return courseList.size(); } @Override public long getGroupId(int groupPosition) { return courseList.get(groupPosition).getId(); } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater inf = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inf.inflate(R.layout.group_heading, null); } TextView courseName = (TextView) convertView.findViewById(R.id.CourseName); TextView courseDate = (TextView) convertView.findViewById(R.id.CourseDate); courseName.setText(courseList.get(groupPosition).getName()); courseDate.setText(courseList.get(groupPosition).getDay() + courseList.get(groupPosition).getTime()); return convertView; } @Override public boolean hasStableIds() { return true; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } } 

Активность java:

 package ch.unibe.unisportbern.views.details; import java.util.ArrayList; import com.example.unisportbern.R; import ch.unibe.unisportbern.support.Course; import ch.unibe.unisportbern.support.DBMethodes; import ch.unibe.unisportbern.support.Sport; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.ExpandableListView; public class DActivity extends Activity{ public final static String NAME = "SportName"; public final static String ID = "SportID"; private Sport sport; private ArrayList<Course> courses; private SportsAdapter sportsadapter; private ExpandableListView myList; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); getSport(); getCourses(); setContentView(R.layout.details_layout); myList = (ExpandableListView) findViewById(R.id.expandableListView); sportsadapter = new SportsAdapter(this, courses); myList.setAdapter(sportsadapter); } private void getCourses() { DBMethodes dbMethodes = new DBMethodes(this); try { courses = dbMethodes.getAllCourses(sport); } catch (Exception e) { } } private void getSport() { Intent intent = this.getIntent(); int id = intent.getIntExtra(ID, 0); String name = intent.getStringExtra(NAME); this.sport = new Sport(id, name); } } 

Заранее большое спасибо!

EDIT: я нашел это случайно. Флажок внутри groupheader был сфокусирован, украл все клики в списке. Для решения этой проблемы просто установите для настраиваемого атрибута флажка / кнопки в вашем списке значение false.

Solutions Collecting From Web of "Android ExpandableListView не расширяется / не изменяется"

Я нашел это случайно. Флажок внутри groupheader был сфокусирован, украл все клики в списке. Для решения этой проблемы просто установите для настраиваемого атрибута флажка / кнопки в вашем списке значение false:

checkbox.setFocusable (ложь); В java или orroid: focusable = "false"

Я столкнулся с одной и той же проблемой, но то, что я добавил в строке «Родитель»

 android:descendantFocusability="blocksDescendants" 

И это сработало для меня.