【发布时间】:2017-02-20 18:29:02
【问题描述】:
这个问题和我之前问过的this one有关。
我在 MainActivity.java 中创建了一个 viewpager,如下所示:
final ViewPager viewPager = (ViewPager) findViewById(R.id.vp_horizontal_ntb);
viewPager.setAdapter(new PagerAdapter() {
@Override
public int getCount() {
return 5;
}
@Override
public boolean isViewFromObject(final View view, final Object object) {
return view.equals(object);
}
@Override
public void destroyItem(final ViewGroup container, final int position, final Object object) {
((ViewPager) container).removeView((View) object);
}
@Override
public Object instantiateItem(final ViewGroup container, final int position) {
if(position==0) {
// here is important!
} else if(position == 1) {
}
...
}
});
现在我想用一些 json RecyclerView 数据列表填充每个页面。(从网络获取 json)。
每个页面都有独立的数据列表。
我第一次为每个页面创建一个片段,如下所示:
if (position == 0) {
final View view = LayoutInflater.from(getActivity().getBaseContext()).inflate(R.layout.fragment_tab0, null, false);
tabFragment.MyAdapter adapter = new tabFragment.MyAdapter(getActivity().getSupportFragmentManager());
adapter.addFragment(new tab0Fragment(), getResources().getString(R.string.tab0));
container.addView(view);
return view;
}
(所以对于 5 页,我有 5 个片段。
但是当我滑动页面时,我的应用程序运行缓慢(滞后)。(点击按钮是正常的)
所以我尝试直接为每个页面编写一个适配器类,如下所示:
if (position == 0) {
final View view = LayoutInflater.from(getBaseContext()).inflate(R.layout.item_vp_list, null, false));
final RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.rv);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getBaseContext(), LinearLayoutManager.VERTICAL, false));
recyclerView.setAdapter(new Tab0RecycleAdapter());
container.addView(view);
return view;
}
使用顶级代码,我的应用程序再次通过交换页面快速运行!
为每个页面创建片段重要吗?
为什么我必须使用片段?(因为一些程序员在 viewpager 中推荐了它)
我的方法(没有片段的第二种方法)对于真实的应用程序是 true 还是 false?
(我是菜鸟,这是我的第一个应用)
【问题讨论】:
标签: android android-fragments android-viewpager