当前位置: 首页 > 知识库问答 >
问题:

ViewPager滚动不流畅

罗乐意
2023-03-14

我在我的活动中实现了一个视图寻呼机,在滚动时,将一组数据加载到适配器并将它们显示在列表视图中。一切正常,但我似乎无法找出如何使其更有效,因为滚动时,视图会冻结,但例如在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;
}

共有2个答案

龚承嗣
2023-03-14

set myPager.setOffscreenPageLimit(1);

印宏阔
2023-03-14

首先,你需要像这样使用支架。

在您的ViewPager中:

class Holder{
    ListView listView;
    Adapter adapter;
}

private ArrayList<Holder> mHolders;

//init holders

@Override
public Object instantiateItem(ViewGroup collection, int position) {
    Holder holder = mHolders.get(position);
    holder.listView.setAdapter(holder.adapter);
    collection.addView(holder.listView);
    return holder.listView;
}

第二,尝试在listview中异步加载数据

 类似资料:
  • 我有底部的导航栏和视窗内的协调器布局,视窗内的每个片段都有自己的折叠工具栏, 但是对我不起作用。 我也不想做通过监听我嵌套的滚动视图(内部片段),因为它没有动画。 我的活动 其中一个片段(在内容视图中有一个嵌套的scrollview。我设置了它的布局行为) 这些链接不起作用在滚动上隐藏/显示底部导航视图 使用AppBarLayout在协调布局中滚动时显示/隐藏底部导航视图 当滚动底部导航栏不隐藏时

  • 问题内容: 如Google所记录,Gallery类在API级别16中已弃用。不再支持此小部件。其他水平滚动小部件包括支持库中的Horizo​​ntalScrollView和ViewPager。因此,我使用ViewPager作为Gallery类的替代方法。 我的目标是最终实现 带有文本描述 的 无限滚动图像ViewPager 。我使用以下代码实现了具有描述每个图像的文本的图像ViewPager,但是

  • 本文向大家介绍Android简单实现无限滚动自动滚动的ViewPager,包括了Android简单实现无限滚动自动滚动的ViewPager的使用技巧和注意事项,需要的朋友参考一下 经常我们会在应用中看到一个可以自动滚动,并且无限滚动的一个ViewPager,百度谷歌上面也有很多关于这方面的教程,但是感觉都略显麻烦,而且封装的都不是很彻底。所以试着封装一个比较好用的ViewPager 效果如下: 简

  • 我用来定义的代码: 中的:

  • 我的整个代码有点长,但如果有帮助,我可以发布它。 提前道谢。我想尝试使用动作手势,然而,我真的不明白为什么我的方法不能工作这么长时间,我可以调用它在正确的地点。我最初的想法是,每次位置发生变化时,如果条件正确,就在“Object instantiateItem(ViewGroup容器,最终int位置)”中调用它。但我不确定这是否是最好的。

  • 我的活动中有一个片段,其结构如下: 它只有一个回收视图。它有一个适配器,其代码如下: 我还以这种方式设置我的片段: 每次我从服务器接收到新数据时,我都会通过以下方式将它们添加到s中的RecyclerView: 每件事都很好!我可以下载数据,将它们添加到回收者视图等等,但问题是回收者视图不流畅滚动。我真的很困惑。有什么想法吗?任何帮助将不胜感激。