17

在android中创建自定义adapterListView,我看到我必须创建一个扩展ArrayAdapter类并实现该getView(..)方法的类。

一切正常,但我想知道调用方法和执行的顺序。即在哪个代码点getView()被调用?

4

3 回答 3

13

ArrayAdapter 的 getView() 被多次调用......

  1. 作为添加新行时...
  2. 您向上滚动和向下滚动列表视图....
  3. 当列表未更改时..

请参阅此链接 Android 自定义 ArrayAdapter getView 方法多次调用 - 重置动态 TextView 值

于 2012-04-15T08:27:35.953 回答
9

来自 android docs - Adapter 对象充当 AdapterView (例如您的情况下的 ListView )和该视图的基础数据之间的桥梁。Adapter 提供对数据项的访问,还负责为数据集中的每个项创建一个视图。

因此,每当 ListView 需要显示特定行的数据时,它都会通过 getView() 方法请求关联的适配器提供与该位置的数据对应的视图。只要需要在屏幕上更新视图(例如,在创建/滚动等期间),就会发生这种情况。

作为应用程序开发人员,只要您在适配器中提供具体的 getView() 实现,您就不必担心究竟在什么时候调用 getView()。确保该方法有效(缩略图等应加载到后台线程中)以获得最佳性能。

于 2012-04-15T08:29:25.937 回答
0
getView(int position, View view, ViewGroup parent) 

被称为

List of Objects

使用的元素数量

getItem(int position)

对于我们列表的长度

所以,直到你的整个列表被分配了一个布局和列表中的数据,它才会被调用。

于 2012-04-15T08:27:09.527 回答