在viewpager重新加载适配器中强制片段

时间:2017-06-14 03:24:35

标签: android android-fragments android-viewpager

我在viewpager下面sqlite

每个视图都会加载一个存储在item中的列表视图。在列表视图的每个List fragment中都有一个按钮,可以通过在DB中进行更改来将自身更改为其他列表 例如:我可以将Absen fragment中的项目移至Atten fragmentadapter

问题中间片段的视图没有重新加载。我认为因为the fragment没有调用(因为previous fragment位于中间,所以它已经在public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_list_student_current_session, container,false); ButterKnife.bind(this, view); setListViewAdapter(); return view; } public void setListViewAdapter(){ DatabaseHelper db = new DatabaseHelper(getActivity()); list = db.getListStudentAbsen(((CurrentSessionActivity)this.getActivity()).getSessionID()); listView.setAdapter(new ListAbsenStudentCurrentSessionAdapter(list, getActivity())); } 中调用)。 我的片段:

activity

这个工具是否正确,或者我应该尝试使用其他工具与DB进行交互,例如仅在USE test; /* or some other schema, NOT information_schema */ CREATE TEMPORARY TABLE ist1 AS SELECT * FROM INFORMATION_SCHEMA.TABLES; CREATE TEMPORARY TABLE ist2 AS SELECT * ist1; 完全完成时更新数据库。

2 个答案:

答案 0 :(得分:1)

目前还不清楚你的计划会发生什么。但是,我可以理解第一个 ViewPager项目中的最明亮的视图项可以更新itselft,然后它应该出现在第二个 ViewPager项目中?如果是这样,您应该使用pagerAdapter.getItem(position)获取第二个 ViewPager项的实例,然后调用类似setData(list)的内容 - > notifyDataSetChanged()

例如,你在PagerAdapter中有3个片段,每个片段都有自己的列表视图,当第一个片段列表中的数据更新时,你必须更新第二个片段列表适配器。

答案 1 :(得分:0)

我使用以下方法找到了我案例的解决方案:

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser && isResumed) {
        //call set adapter here
    }
}