我有一个androidListView系统,它在滚动时会有小的(比如1-5帧)口吃,大约每秒钟一次。我意识到很多安卓手机在动画流畅性上都有这些问题,然而,在我的手机(运行安卓2.2的摩托罗拉A855)上,原生联系人列表滚动起来相当流畅。联系人列表中的项目视图比“我的列表”中的项目视图更复杂,即:

<RelativeLayout>
    <TextView />
    <TextView />
</RelativeLayout>

我只想达到与本地联系人列表一样的平滑度。这似乎应该是可能的,而不优化在本机代码,但也许我错了。
我尝试了一些事情:我进一步简化了项目视图,并尝试以编程方式而不是用xml来实例化它。我还尝试根据以下链接更改对项目单击事件的反应方式:
http://groups.google.com/group/android-developers/browse_thread/thread/7dc261a6b382ea74?pli=1
这些事情似乎对表演没有任何影响。
我可以在我的应用程序中做些什么来提高性能吗?我希望将此应用程序部署到多个手机上,因此在我的情况下,更改手机设置或根目录设备不是一个选项。下面是适配器类中的getview方法:
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater flater = (LayoutInflater)context.getSystemService(ListActivity.LAYOUT_INFLATER_SERVICE);
        layout = flater.inflate(R.layout.song_view, parent, false);
        TextView first = (TextView)layout.findViewById(R.id.firstLine);
        TextView second = (TextView)layout.findViewById(R.id.secondLine);

        Thing t = array.get(position);
        first.setText(t.title);
        second.setText(t.name);
        return layout;
    }

提前谢谢!

最佳答案

如果没有看到代码,很难知道为什么会发生这种情况。
但是,可以在listadapter中查看getview()方法(假设您使用的是自定义适配器)。尝试重新使用作为参数传递给此方法的视图,而不是每次都创建一个新的视图。在这个方法中也不要做太重的事情(例如,网络调用),事实上,为了获得最好的性能,尽量使它变得简洁和有意义。

07-28 01:35
查看更多