List Adapter和getView函数说明

时间:2011-10-13 12:14:18

标签: java android

我对列表视图的生命周期感到非常困惑。更具体地说,列表适配器究竟做了什么?它只是为给定视图提供数据吗?何时/何地调用getView()函数?这个getView()函数提供了什么目的?从查看代码开始,看起来getView()正在向要显示的视图“分配”数据。我希望能够使用列表视图而不必记住,执行此操作然后将其用于工作。我更愿意理解它,所以我可以正确使用它。有人请帮助我理解这一切。

另外,如果有人可以向我解释.. BaseAdapter和ArrayAdapter有什么区别?以及Android附带的任何其他类型的适配器。

4 个答案:

答案 0 :(得分:2)

我所理解的是您的适配器构造函数由activity实例化,然后在活动启动时调用getView()方法。 {@param position,view,viewGroup}

  1. position:它指的是适配器给出的视图位置。请注意它与{OnItemClick(AdapterView适配器,View v,int position,long id)}中的位置不同,此处position是列表项位置。 {getView()}中的{position}在列表中的特定对象再次显示后更改,例如。当你滚动。

  2. view:此处的视图是您希望通过getView()呈现的视图。它可以是每行的特定XML布局。因此,这清楚地表明调用getView来绘制每一行。此视图需要有效,一个或另一个布局(默认为LinearLayout)将被选中以保持唯一性。

  3. viewgroup:您可能知道并且名称将是@param的容器:view

  4. 赞赏任何其他观点。

答案 1 :(得分:1)

getView()使用给定的索引将数据填充到项目的视图中。作为参数给出的视图可以是预充气视图。如果不是,你必须自己给它灌输。 ArrayAdapter只是在给定视图上调用setText,其对象的toString()结果与数组中的相应索引相对应。如果你覆盖它,你可以做更复杂的事情,比如分配图片或填写更多的TextViews。

我推荐以下教程:http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/

答案 2 :(得分:1)

嗨列表adaper为listview提供了视图。

当用户滚动listview时,会调用getview。

getview用于使用数据填充视图,因此使用名称适配器。

答案 3 :(得分:0)

适配器会为您完成所有“rember to the this”。如果通过适配器的方法更改列表视图的后备数据结构(例如“add()”),它将触发列表视图所需的所有datachanged和update事件,以显示数据的新状态。