【问题标题】:ListView scrolling smoothnessListView 滚动流畅度
【发布时间】:2013-01-05 09:00:39
【问题描述】:

我有一个功能齐全的listview(在ListFragment 中)和一个自定义ArrayAdapter。 适配器的布局由一个imageview、一个button、一个gridview和几个textviews组成。
问题是列表视图在滚动时非常紧张。我已经实现了ViewHolder 模式,它稍微提高了性能。
GridView 包含我在AsyncTask 中检索的联系人图像,并且还使用应用程序缓存来显示位图。 我还能做些什么来使 listview 滚动平滑?
我在适配器的getView 方法中使用了如下所示的视图回收

public View getView(int position, View convertView, ViewGroup parent) {
    View myView;
    holder = new ViewHolder();
    if (convertView == null) {
        inflater = (LayoutInflater) getContext().getSystemService(
                                  Context.LAYOUT_INFLATER_SERVICE);
        myView = inflater.inflate(R.layout.events_list_activity, parent, false);
    }
    else {
        myView = convertView;
    }
}

【问题讨论】:

  • 您是否正确回收了ListView每个项目中使用的Views?
  • 您的ListView 的每一行都有一个GridView?如果是这样的话,那么我的下一个猜测是滚动的触摸动作被委派给GridView 孩子,这使它变得紧张。尝试为所有GridViews 关闭触摸操作,看看是否有帮助,然后尝试删除所有GridViews,看看问题是否消失。没有太多代码,我们所能做的就是猜测;)

标签: android android-listview android-listfragment


【解决方案1】:

This 问题可能解释了您的列表视图的抖动行为。

如果你想提高滚动速度,试试这个,

getListView().setFastScrollEnabled(true);

【讨论】:

  • 不,它没有帮助,因为我已经处理了所有这些。我的适配器上没有运行任何繁重的操作。 setFastScrollEnabled 也不是解决方案,因为 listView 在滚动时仍然会抖动。
【解决方案2】:

1.扁平化您的 ViewItem 层次结构并使用合并标签

2.实现ViewHolder模式,或者使用androidannotation的注入功能

3.在另一个线程中执行重载。

【讨论】:

    【解决方案3】:

    它会给你从你的布局顶部滚动,它也会给你流畅的滚动体验。

    mainScrollView=(ScrollView)findViewById(R.id.scrollview);
    mainScrollView.smoothScrollTo(0, 0);
    mainScrollView.fullScroll(mainScrollView.FOCUS_UP);
    

    【讨论】:

    • 是的,但我的问题与listview 有关,scrollview 有什么不同?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 2014-12-06
    相关资源
    最近更新 更多