我正在使用ViewPager显示帖子列表,其适配器扩展了FragmentStatePagerAdapter。我面临的问题是,当删除任何帖子时,我正在调用以下方法从列表中删除该项目。但是视图未更新。当我滚动列表,然后再滚动时,该项目将从列表中删除。在getPositionItem中使用“ POSITION_NONE”会使我的屏幕空白为白色。
PagerAdapter中的方法:
public class TestFragmentAdapter extends FragmentStatePagerAdapter {
Context mContext;
LayoutInflater mLayoutInflater;
private ArrayList<PostsDataItem> postList;
public HomeFragmentAdapter(Context context, FragmentManager fm) {
super(fm);
this.mContext = context;
this.postList = new ArrayList<>();
mLayoutInflater = LayoutInflater.from(mContext);
}
@Override
public Fragment getItem(int position) {
return PostFragment.newInstance(postList.get(position), position);
}
public void removeItem(int position) {
postList.remove(position);
notifyDataSetChanged();
}
/*
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}*/
}
答案 0 :(得分:1)
您应该在适配器类中使用此代码来进行寻呼机刷新项目。
// This is called when notifyDataSetChanged() is called
@Override
public int getItemPosition(Object object) {
// refresh all fragments when data set changed
return PagerAdapter.POSITION_NONE;
}
答案 1 :(得分:0)
按如下所示更改getItemPosition并检查它是否不会引起任何问题:-
@Override
public int getItemPosition(Object object) {
PostFragment fragment = (PostFragment)object;
String title = fragment.getTitle();
int position = titles.indexOf(title);
if (position >= 0) {
return position;
} else {
return PagerAdapter.POSITION_NONE;
}
}