我的问题是:
LayoutInflater?
发布于 2012-04-12 16:52:24
1:LayoutInflater
获取您的布局XML文件,并根据其内容创建不同的视图对象。
2:适配器是为重用视图而构建的,当滚动视图使其不再可见时,它可以用于出现的新视图之一。这个重用的视图就是convertView
。如果这是null,这意味着没有回收的视图,我们必须创建一个新的视图,否则我们应该使用它来避免创建新的视图。
3:提供了parent
,以便您可以将视图扩展为适当的布局参数。
所有这些都可以用来有效地创建将出现在列表中的视图(或使用适配器的其他视图):
public View getView(int position, @Nullable View convertView, ViewGroup parent){
if (convertView == null) {
//We must create a View:
convertView = inflater.inflate(R.layout.my_list_item, parent, false);
}
//Here we can do changes to the convertView, such as set a text on a TextView
//or an image on an ImageView.
return convertView;
}
注意LayoutInflater
的使用,parent
可以用作它的参数,以及convertView
是如何重用的。
发布于 2012-04-12 16:56:57
适配器中的getView()
方法用于生成ListView
、Gallery
、...
RelativeLayout
)convertView
中定义的视图对象(根对象,通常是用于回收的LinearLayout
、FrameLayout
或xml。假设您有一个列表视图,它一次只能显示10个项目,当前显示的是item 1 -> item 10。当您向下滚动一个项目时,item 1将不在屏幕上,而item 11将显示出来。要为项目11生成视图,将调用getView()方法,这里的convertView
是项目1的视图(不再需要)。所以要为项目11创建一个新的视图对象(代价很高),为什么不重用convertView
呢?我们只需检查convertView
是否为空,如果为空则创建新视图,否则重用=>是convertView
或ListView ...它包含getView()
生成的项的视图。注意:您不能直接调用此方法,只需实现它来告诉父视图如何生成项目的视图。
发布于 2012-04-12 16:42:55
你可以看看这段关于列表视图的视频。它来自去年的Google IO,在我的脑海中仍然是列表视图中最好的漫游。
http://www.youtube.com/watch?v=wDBM6wVEO70
https://stackoverflow.com/questions/10120119
复制相似问题