【发布时间】:2015-04-24 16:24:00
【问题描述】:
我在我的活动中实现了一个 viewpager,它在滚动时将一组数据加载到适配器并在列表视图中显示它们。一切正常,但我似乎不知道如何提高效率,因为滚动时,视图会冻结,但例如在 GMAIL 应用程序中,当在电子邮件之间滚动时,滚动非常流畅。
下面是我正在使用的代码:
活动:
在创建时
pageradapter adapter2 = new pageradapter(this, ArrayOfItems); //ArrayOfItems is an Array containing the data that will be displayed
ViewPager myPager = (ViewPager) findViewById(R.id.mypanelpager);
myPager.setAdapter(adapter2);
pagechangelistener pageListener = new pagechangelistener();
myPager.setOnPageChangeListener(pageListener);
页面适配器:
public pageradapter(Activity act, ArrayList <List<Item>>Arrayitems) {
this.Arrayitems = Arrayitems;
activity = act;
}
public int getCount() {
return Arrayitems.size();
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
List<Item> item = Arrayitems.get(position);
ListView view = new ListView(activity);
taskdetailsarrayadaptertest adapter = new taskdetailsarrayadaptertest(activity, item);
view.setAdapter(adapter);
view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
((ViewPager) container).addView(view, 0);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((View) object);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == ((View) arg1);
}
@Override
public Parcelable saveState() {
return null;
}
pagechangelistener:
@Override
public void onPageSelected(int position)
{
currentPage = position;
int positionTemp = position + 1;
}
public final int getCurrentPage() {
return currentPage;
}
【问题讨论】:
-
感谢您的快速响应,但您认为我的代码高效吗?
-
您是否正确处理列表视图中的加载数据,我的意思是在后台进行?因为你的代码看起来不错并且不能滞后,除非列表视图本身有滞后。
-
你的代码看起来不错。
-
在 oncreate 时(一次)正在加载数据。你的意思是我应该在滚动时动态加载数据吗?