改善Android ListView中的滚动平滑度
我有一个Android改善Android ListView中的滚动平滑度,android,android-listview,smooth-scrolling,Android,Android Listview,Smooth Scrolling,我有一个AndroidListView,它在滚动时会有小的(比如说,1-5帧)口吃,大约每秒一次。我意识到许多安卓手机在动画流畅性方面存在这些问题,然而,在我的手机(运行安卓2.2的摩托罗拉A855)上,本机联系人列表的滚动非常平稳。联系人列表中的项目视图比我的列表中的项目视图更复杂,即: <RelativeLayout> <TextView /> <TextView /> </RelativeLayout> 提前谢谢 如果没有看
ListView
,它在滚动时会有小的(比如说,1-5帧)口吃,大约每秒一次。我意识到许多安卓手机在动画流畅性方面存在这些问题,然而,在我的手机(运行安卓2.2的摩托罗拉A855)上,本机联系人列表的滚动非常平稳。联系人列表中的项目视图比我的列表中的项目视图更复杂,即:
<RelativeLayout>
<TextView />
<TextView />
</RelativeLayout>
提前谢谢 如果没有看到您的代码,很难知道为什么会发生这种情况
但是,可以查看ListAdapter中的getView()方法(假设您使用的是自定义适配器)。尝试并重新使用作为参数传递给此方法的视图,而不是每次都创建一个新的视图。在这种方法中,也不要做太重的事情(例如网络呼叫),事实上,要尽可能精简和平均,以获得最佳性能。您尝试过高效适配器吗 在我看来,动画平滑的问题是由于垃圾收集器在后台运行造成的。如果您正在创建大量对象,那么您将在listview滚动中看到滞后
希望能有所帮助。提供一些关于您的适配器的信息。您至少要阅读官方的android指南。它被称为Viewholder模式。“尝试并重新使用作为参数传递给此方法的视图,而不是每次都创建一个新的视图”。事实证明,这正是问题所在。我希望这能帮助其他认为convertView参数只是为了方便的人。我已经在问题中添加了我的原始代码,这样人们就可以看到我的错误。马克·艾利森,你是一个(奇怪的,可怕的)计算之神。如果我将
SimpleCursorAdapter
与第二个未弃用的构造函数一起使用,会怎么样?我是应该扩展它还是应该开箱即用?它将自动使用回收视图。如果覆盖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;
}