滚动浏览ViewPager中的选项卡时,在RecyclerView中更新数据

时间:2016-02-23 15:23:21

标签: android android-fragments

我有3个片段,比如A,B,C,a是中心片段,也是显示应用程序启动时的片段。 A有一个数据库,可以从片段A更改数据。在滚动到B或C时,我希望数据更新并显示在RecyclerView中。目前我在片段的onCreateView()中有更新代码,但由于每次更改页面时android都没有调用onCreateView(),因此数据不会更新。

我尝试编写一个函数来刷新列表并在主活动中放入addOnPageScrolledListener(),但这会产生空指针异常。

每当滚动到片段时,如何更改数据?

片段代码:

public class RecentFragment extends Fragment {

private DBHelper dbHelper;
private RecyclerView mRecyclerView;

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    dbHelper = new DBHelper(getActivity());
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View rootView = inflater.inflate(R.layout.fragment_list, container, false);
    mRecyclerView = (RecyclerView) rootView.findViewById(R.id.event_list_view);
    mRecyclerView.setHasFixedSize(true);
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
    linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    mRecyclerView.setLayoutManager(linearLayoutManager);
    ArrayList<String> arrayList = dbHelper.getData();
    FavouritesListAdapter listAdapter = new FavouritesListAdapter(getActivity(),arrayList);
    mRecyclerView.setAdapter(listAdapter);
    return rootView;
}
public void updateList(){
    ArrayList<String> arrayList = new ArrayList<>();
    FavouritesListAdapter listAdapter = new FavouritesListAdapter(getActivity(),arrayList);
    mRecyclerView.setAdapter(listAdapter);
}

1 个答案:

答案 0 :(得分:0)

尝试使用此方法public void setUserVisibleHint(boolean isVisibleToUser)如果用户当前可以看到此片段的UI,则返回true,否则返回false。在您的情况下,哪个片段当前显示在viewpager中。