У меня есть фрагмент с 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 не имеет правильных ограничений. Установите ограничения правильно, и это сработает. Видеть это.
@JánosSicz-Mesziár Я добавил в вопрос, как установить адаптер на HospitalFragment.
@ADM Я добавил ограничения, но, похоже, ничего не изменилось
Ладно, похоже, мои подозрения подтвердились. Мои советы: ваша ссылка view на самом деле является корневым макетом. Корневой макет был RecyclerView, но после вашего изменения это уже не так. Но ваш код не будет давать сбоев во время выполнения, потому что код Java написан безопасно с использованием instanceof. Вы должны найти RecyclerView по view.findviewById().
Можете ли вы добавить XML для макета, который RecyclerView раздувает?
После моего комментария вот фрагмент кода:
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;
Я закончил тем, что изменил очень близко к этому после вашего комментария, собирался попросить вас добавить ответ, чтобы я мог его принять! Большое спасибо Янош!
Как попытаться найти RecyclerView в HospitalFragment?