我有一个tabView和viewPager
我使用(确切地说是一个)本地数据库来获取数据
当我对我的数据库进行更改时,至少我应该在下一个(或后面)转到2个选项卡,以便在我的viewPager片段中发生更改(我有4个选项卡)
我尝试了很多方法,比如POSITION_NONE和INVALIDATE()......
但没有改变!!!
任何人都可以帮我刷新我的片段(在当前页面和其他页面上)?
public class FragmentList extends Fragment {
public static RecyclerView TaskRecyclerView;
private View view;
private AdapterTask adapterTask;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view=inflater.inflate(R.layout.fragment_tasks,container,false);
TaskRecyclerView =(RecyclerView)view.findViewById(R.id.task_recycler);
DatabaseOpenHelper databaseOpenHelper=new DatabaseOpenHelper(getContext());
adapterTask =new AdapterTask(getActivity(),databaseOpenHelper.getTasks());
TaskRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false));
TaskRecyclerView.setAdapter(adapterTask);
return view;
}
public static FragmentList newInstance() {
Bundle args = new Bundle();
FragmentList fragment = new FragmentList();
fragment.setArguments(args);
return fragment;
}
}
正如我所说,在我更改至少2个标签之前没有发生任何变化(即使在PAGE SELECTED()中)...我的意思是例如当我在我的标签号1中时,我转到标签2然后没有.3,所以no.3刷新新数据,当我回到第1号标签时,它也刷新了
但是2号标签仍然是旧数据!!!
我应该去第4号标签然后回来看第2号标签的变化。
重要更新
正如我所知,我的问题是offScreenPageLimit()没有达到0。
我怎么能把它变成0?
答案 0 :(得分:1)
在onPageSelected上使用notify方法刷新数据。 您的代码将是
adapterTask.notify();
答案 1 :(得分:0)
您是否尝试过.notifyDataChanged();你的适配器?
答案 2 :(得分:0)
尝试覆盖此方法。此方法将告诉您片段是否可见。
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
// visible
}
else {
}
}