RecyclerView исчезает при изменении макета

У меня есть фрагмент с recyclerview, он отлично работает и имеет только recyclerview.

Исходный XML, который работает:

<android.support.v7.widget.RecyclerView xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:app = "http://schemas.android.com/apk/res-auto"
    xmlns:tools = "http://schemas.android.com/tools"
    android:id = "@+id/list"
    android:name = "pt.lusofona.helpnow.HospitalFragment"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:layout_marginLeft = "16dp"
    android:layout_marginRight = "16dp"
    app:layoutManager = "LinearLayoutManager"
    tools:context = ".HospitalFragment"
    tools:listitem = "@layout/fragment_hospital" />

Я пытался добавить FAB, поэтому я добавил Constrained Layout и понял, что если я добавлю что-нибудь на экран, recyclerview перестанет отображать элементы.

С приведенным ниже кодом он перестает отображать элементы (пустой фрагмент):

<android.support.constraint.ConstraintLayout xmlns:app = "http://schemas.android.com/apk/res-auto"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
xmlns:android = "http://schemas.android.com/apk/res/android">

<android.support.v7.widget.RecyclerView xmlns:tools = "http://schemas.android.com/tools"
    android:id = "@+id/list"
    android:name = "pt.lusofona.helpnow.HospitalFragment"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    app:layoutManager = "LinearLayoutManager"
    app:layout_constraintEnd_toEndOf = "parent"
    app:layout_constraintStart_toStartOf = "parent"
    app:layout_constraintTop_toTopOf = "parent"
    tools:context = ".HospitalFragment"
    tools:listitem = "@layout/fragment_hospital" />

</android.support.constraint.ConstraintLayout>

Я проверил подобные ответы, но ничего не помогло.

Вот как я устанавливаю адаптер на HospitalFragment

    if (view instanceof RecyclerView) {
        Context context = view.getContext();
        RecyclerView recyclerView = (RecyclerView) view;            
        adapter = new MyHospitalRecyclerViewAdapter(DummyContent.ITEMS, mListener);
        recyclerView.setAdapter(adapter);
    }
    return view;

Как попытаться найти RecyclerView в HospitalFragment?

János Sicz-Mesziár 18.05.2019 19:10

Ваш RecyclerView не имеет правильных ограничений. Установите ограничения правильно, и это сработает. Видеть это.

ADM 18.05.2019 19:16

@JánosSicz-Mesziár Я добавил в вопрос, как установить адаптер на HospitalFragment.

Skepller 18.05.2019 19:32

@ADM Я добавил ограничения, но, похоже, ничего не изменилось

Skepller 18.05.2019 19:33

Ладно, похоже, мои подозрения подтвердились. Мои советы: ваша ссылка view на самом деле является корневым макетом. Корневой макет был RecyclerView, но после вашего изменения это уже не так. Но ваш код не будет давать сбоев во время выполнения, потому что код Java написан безопасно с использованием instanceof. Вы должны найти RecyclerView по view.findviewById().

János Sicz-Mesziár 18.05.2019 19:37

Можете ли вы добавить XML для макета, который RecyclerView раздувает?

Himanshu Rawat 18.05.2019 19:42
0
6
309
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

После моего комментария вот фрагмент кода:

RecyclerView recyclerview = view.findViewById(R.id.list);
if (recyclerview != null) {
    Context context = view.getContext();
    adapter = new MyHospitalRecyclerViewAdapter(DummyContent.ITEMS, mListener);
    recyclerview.setAdapter(adapter);
}
return view;

Я закончил тем, что изменил очень близко к этому после вашего комментария, собирался попросить вас добавить ответ, чтобы я мог его принять! Большое спасибо Янош!

Skepller 18.05.2019 19:48

Другие вопросы по теме