В моем приложении getChildView()
внутри моего ExpandableListAdapter не вызывается, в то время как адаптер возвращает правильное количество дочерних элементов (при вызове getChildrenCount()
). Мой вопрос; какие условия необходимо выполнить, чтобы ExpandableListAdapter расширил свои дочерние элементы?
При каких условиях getChildView() вызывается в ExpandableListAdapter
Ответы (3)
вызывается, когда у вас есть более 1 элемента в группах и в дочерних элементах, я имею в виду, когда getGroupCount возвращает значение больше 0
Метод getGroupCount() сообщает вам, сколько групп будет в вашем ExpandableListView, а метод getChildrenCount(int groupPosition) сообщает вам, сколько дочерних элементов будет в соответствующей группе. Таким образом, пока метод getChildrenCount не вернет значение 1 или больше 1, до тех пор, пока дочерние представления не будут видны.
Еще одна вещь, которая также действительно имеет значение, когда ваши дочерние представления не становятся видимыми, - это «высота расширяемого представления списка должна быть match_parent, если ваше расширяемое представление списка находится в любом другом макете, тогда эта высота макета также должна быть match_parent».
Ваша проблема не в getChildView(), мой друг, а в макете.
Точная проблема связана с android:layout_height="" вашего расширяемого списка, который вырезает дочерние элементы.
Используйте это как макет:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#FFFFFF"
tools:context="/*your activity*/" >
<ExpandableListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:childDivider="@android:color/transparent"
android:dividerHeight="0dp" />
getChildView()
. Я бы предположил, что он вызывается, когда ему нужно подготовиться к отображениюView
. Поэтому, если родитель не расширен, для его вызова не было бы причин, поскольку он знает, что ему не нужно показывать. Но опять же, в каких условиях вы это тестируете? - person Andy   schedule 09.08.2013childrenCount
возвращает 0, функция не будет вызываться (по понятным причинам) - person D.Ginzbourg   schedule 09.08.2013getChildView
не вызывается. отладчик или ведение журнала? - person Andy   schedule 09.08.2013getChildView
. Он никогда не всплывал. Я протестировал его наgetGroupView
, и он появился при вызове этого метода. - person D.Ginzbourg   schedule 10.08.2013