如何更新片段(位于viewpager内)内的recyclerview

时间:2018-12-01 13:06:23

标签: android android-fragments android-recyclerview android-viewpager

我有一个由ViewPager组成的活动。

ViewPager由多个片段组成。

每个片段都包含一个带有项目的recyclerView。

现在如何更新recyclerView?

例如。视图寻呼机在0位置并显示“片段1”。 单击按钮后,我将一个项目添加到适配器并调用notifyItemInserted()。

问题是将项目添加到“片段2”的recylerView中,而不是片段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);
    }
}

0 个答案:

没有答案