#android #android-layout #android-fragments #android-listview
#Android #android-макет #android-фрагменты #android-listview
Вопрос:
У меня есть ListFragment со следующим макетом
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="8dp"
android:paddingRight="8dp" >
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:drawSelectorOnTop="false" >
</ListView>
<TextView
android:id="@android:id/empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="No data" />
</LinearLayout>
Когда ListFragment изначально создается, в нем нет данных, и все в порядке. Текстовое представление «нет данных» отображается, как и ожидалось.
Но когда я добавляю содержимое / данные, ListFragment остается в представлении «Нет данных» и не переключается на отображение строк. Если я выну @android:id / пустую часть XML, я смогу видеть строки в полном порядке. Это означает, что это не проблема ввода данных, а проблема, связанная с фактическим файлом XML (я верю).
Есть ли какой-нибудь способ исправить это?
Обновление: вызов notifyDataSetChanged() при добавлении в список разрешил эту проблему!
Комментарии:
1. Вы проверили, что ваш адаптер возвращает 0 в getCount()?
Ответ №1:
Что, если вы добавите этот код к фрагменту, где вы устанавливаете адаптер в listview? list.setEmptyView(findViewById(android.R.id.empty)) ?
Комментарии:
1. что
list
в этом сценарии?2. Я пропустил, что вы использовали ListFragment, который должен обрабатывать пустое представление, но в этом случае это будет getListView() внутри фрагмента.
3. Если это ничего не дает, возможно, вы забыли вызвать notifyDataSetChanged() при добавлении новых данных?
4. Вызов notifyDataSetChanged() исправил эту проблему! Спасибо! 🙂