У меня есть действие, которое состоит из ViewPager.
ViewPager состоит из нескольких фрагментов.
Каждый фрагмент содержит recyclerView с элементами в нем.
Теперь какя могу обновить recyclerView?
Например.Пейджер просмотра находится в позиции 0 и показывает «фрагмент 1».При нажатии кнопки я добавляю элемент в адаптер и вызываю notifyItemInserted ().
ПРОБЛЕМА - элемент добавляется в recylerView «фрагмента 2» вместо фрагмента 1.
Адаптер ViewPager:
private class PagerAdapter extends FragmentStatePagerAdapter {
PagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int pos) {
Fragment fragment = new MyFragment();
Bundle args = new Bundle();
args.putInt("listID", listID);
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount() {
return lists.size();
}
@Override
public CharSequence getPageTitle(int position) {
return lists.get(position).getTitle();
}
}
MyFragment:
public class MainFragment extends Fragment {
ArrayList<String> data;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
res = getResources();
// Inflate a view
View fragmentView = inflater.inflate(R.layout.fragment_main, container, false);
setHasOptionsMenu(true); // to allow this fragment to use action bar
initialize(fragmentView);
populateRecyclerView();
// Button click listenmer
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Add item to recyclerView
data.add("Banana");
mAdapter.notifyItemInserted(mAdapter.getItemCount());
}
});
}
private void populateRecyclerView() {
data = new ArrayList();
data.add("Apple");
data.add("Mango");
// Setup adapter
mAdapter = new MainListAdapter(getActivity(), MainFragment.this, new ArrayList());
// Set adapter and populate recyclerView
recyclerView.setAdapter(mAdapter);
mAdapter.addAll(data);
}
}