我的项目中有一个自定义的CursorAdaptor,其中包含被覆盖的方法bindView(View view, Context context, Cursor cursor)和newView(View view, Context context, Cursor cursor)。我想知道CursorAdapter是用来做什么的,覆盖bindView()和newView()的区别和用途是什么。
我已经阅读了Developer Site和this教程,但我仍然不理解。由于我是Android的初学者,请帮助我理解这个概念。
发布于 2012-10-01 20:10:27
为了理解这一点,您必须首先了解BaseAdapter是如何工作的,因为CursorAdapter是BaseAdapter的子类。
安卓为一个ListView维护了一个视图池,它会提供给你,这样你就可以重用它,而不是每次都创建一个新的视图。
在BaseAdapter中,您将拥有一个名为getView()的函数,其中一个参数是名为convertView的View对象。基本上,如果列表是第一次加载,这个convertView将是null,而一旦你开始滑动列表,它将不是null。因此,在BaseAdapter的getView()方法中,您将检查convertView是否为null。如果是,你就会膨胀它。然后,您可以使用该视图并将其元素设置为正常。这将极大地提高列表视图的滚动性能。
当listview的数据源是数据库时,CursorAdapter使其易于使用。然而,在光标适配器中,安卓负责检查convertView是否为null。在newView()方法中,您只需膨胀视图并返回它。在bindView()方法中,设置视图的元素。
例如,想象一个设备上的列表视图,它可以在屏幕上显示多达11个列表项。在这种情况下,newView()将被调用最多11次。但是,每当滚动列表视图时,bindView()都会被调用多次。滚动列表时,将一次又一次地重用在newView方法中创建的11个视图。
https://stackoverflow.com/questions/12672749
复制相似问题