2017-02-09 7 views
0

В моем приложении у меня есть 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); 
+0

кажется, что ваш адаптер получает уведомление только в том случае, если 'arrayList' пуст. – magicleon

ответ

1

Ваш notifyDataSetChanged называется conditi основанный на значениях переменных. Может быть, это вообще не называется.

Сложно сказать наверняка, поскольку код настолько минимален.

+0

. Я боролся с этим около 5 часов, и я не заметил, что это утверждение есть. благодаря –