Как обновить мнение переработчика внутри фрагмента (который находится внутри окна просмотра) - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть действие, которое состоит из 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);
    }
}
...