我有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);
}
答案 0 :(得分:0)
尝试使用此方法public void setUserVisibleHint(boolean isVisibleToUser)如果用户当前可以看到此片段的UI,则返回true,否则返回false。在您的情况下,哪个片段当前显示在viewpager中。