【发布时间】:2015-11-23 17:57:30
【问题描述】:
我试过了,但是错误的列表被绑定到了 recyclerview。我也尝试过 SparseArray,即使这样也行不通。当我启动 Mainactivity 时,getItem() 被调用了两次。我如何处理返回的位置? 我尝试返回 viewpager currentItem,即使这样也不起作用。
MainActivity
public class PagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;
public PagerAdapter(android.support.v4.app.FragmentManager fragmentManager, int tabCount)
{
super(fragmentManager);
this.mNumOfTabs = tabCount;
}
@Override
public Fragment getItem(int position) {
return Categories_Fragment.newInstance(position);
}
@Override
public int getCount() {
return mNumOfTabs;
}
}
Categories_Fragment
public class Categories_Fragment extends Fragment
{
private RecyclerView lvMessages;
private int fromPage;
public static Categories_Fragment newInstance(int num) {
Categories_Fragment f = new Categories_Fragment();
// Supply num input as an argument.
Bundle args = new Bundle();
args.putInt("from", num);
f.setArguments(args);
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
fromPage = getArguments().getInt("from");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View rootView = inflater.inflate(R.layout.categories_filter, container, false);
lvMessages = (RecyclerView)rootView.findViewById(R.id.lv_categories_filter);
LinearLayoutManager x = new LinearLayoutManager(getActivity());
x.setOrientation(LinearLayoutManager.VERTICAL);
lvMessages.setLayoutManager(x);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
// bind different data to the RecyclerView based on fromPage value.
}
}
【问题讨论】:
-
尝试将 Fragment 设置为静态:
public static class Categories_Fragment extends Fragment -
请在引用 PagerAdapter 的地方发布代码。我认为主要问题是“getItem() 被调用了两次......”
-
这应该适合你。实现一个仅在片段可见时才调用的接口。 stackoverflow.com/a/24386516/2102304
标签: android android-fragments fragmentstatepageradapter