В моем приложении у меня есть ViewPager
, который содержит 5 фрагментов с RecyclerView
внутри каждого из них. После нажатия на кнопку мне нужно обновить элементы моего RecyclerView
s, поэтому я отправляю запрос на сервер и получаю ответ в своей деятельности, тогда я звоню notifyDataSetChanged();
для всех своих RecyclerView
, но изменения не отображаются до тех пор, пока я не обновляю 2-3 страницы моего ViewPager
. Что не так? здесь некоторый код из моего приложенияRecyclerView внутри Фрагмента не обновляется
Фрагменты:
public class ReservedFragment extends Fragment {
List<ReservedTimesModel> arrayList;
ReservedTimesAdapter reservedTimesAdapter;
RecyclerView recyclerView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_reserved, container, false);
recyclerView = (RecyclerView) view.findViewById(R.id.fragment_recycle);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
if (arrayList != null) {
if (!arrayList.isEmpty()) {
reservedTimesAdapter = new ReservedTimesAdapter(arrayList, getActivity());
recyclerView.setAdapter(reservedTimesAdapter);
} else {
view.findViewById(R.id.textview).setVisibility(View.VISIBLE);
}
} else {
view.findViewById(R.id.textview).setVisibility(View.VISIBLE);
}
return view;
}
public void refresh() {
if (reservedTimesAdapter != null) {
if (arrayList.isEmpty()) {
getView().findViewById(R.id.textview).setVisibility(View.VISIBLE);
} else {
reservedTimesAdapter.notifyDataSetChanged();
}
}
}
Кода внутри Button
нажми слушатель в адаптере:
context.getReserved();
код в обновлении активности после установки нового списка для каждого фрагмента:
viewPager.setVisibility(View.VISIBLE);
reservedFrag.refresh();
deprecatedFrag.refresh();
cancelledFrag.refresh();
cancelledByAdminFrag.refresh();
pendingFrag.refresh();
viewPager.setCurrentItem(4);
кажется, что ваш адаптер получает уведомление только в том случае, если 'arrayList' пуст. – magicleon