【问题标题】:ListView slowing down ViewPager swipeListView 减慢 ViewPager 滑动
【发布时间】:2013-05-29 14:46:38
【问题描述】:

我有一个 ViewPager,其中包含从网上下载的 ImageView,当我的 ListView(在另一个单独的布局中)未初始化时,它可以正常滑动。

但是当我的 ListView 创建时问题就开始了。 ViewPager 仍然“滑动”,但只滑动大约 1/4 的方式,滞后,然后正确加载下一个 ImageView。

所有的网络和位图操作都是使用 AsyncTask 完成的。我还使用了来自Singly API 的 RemoteImageCache API,效果很好。

关于为什么 ViewPager 的滑动滞后的任何想法?

【问题讨论】:

  • 也许您的适配器的 getView() 在刷卡时不断被调用?在那里放置一个日志并检查发生了什么。另外,您是否通过适配器的 ViewHolder 回收您的视图?
  • 你说的是 ListView 适配器吗?是的,我已经为它实现了视图模式。是的,日志确认每次滑动后都会调用 getView。有办法控制吗?
  • 找到解决方案:stackoverflow.com/questions/11186004/…。 listview 的高度和宽度必须是固定的,否则它会一直调用 getView。

标签: android performance android-listview android-viewpager


【解决方案1】:

速度变慢是由于 ListView 对 getView 的调用次数过多(我的列表中每个项目超过 3 倍)。

根据这个solution,必须给ListView的宽度和高度指定具体的值,而不是wrap_content,否则getView()会被多次调用。

【讨论】:

    【解决方案2】:

    这只是因为列表视图滚动与视图寻呼机滚动冲突..

    如果您想知道这只是设置列表视图可见性消失了,请不要删除代码listView.setAdapter(adapter) 然后尝试视图寻呼机将正确滑动。

    【讨论】:

      【解决方案3】:

      最近(2020),一定是实现一个 ViewHolder 类来获得速度,或者,用 RecyclerView 重构,这取决于你的列表的大小和你必须执行这些方法的时间,就像我的软件已经生产阶段,我更喜欢使用 ViewHolder 类,速度增益达到 40%,对我来说足够了,如果你需要更快的速度,必须使用 RecyclerView(重构你的列表视图,编辑 .xml,你的适配器,使用线性或网格布局管理器...)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-18
        • 1970-01-01
        • 1970-01-01
        • 2011-08-01
        相关资源
        最近更新 更多