android - 创建您自己的自定义适配器时,getView() 方法如何工作?

标签 android android-arrayadapter android-view layout-inflater

我的问题是:

  1. LayoutInflater 的具体作用是什么?
  2. 为什么我读过的所有文章都先检查 convertview 是否为空?为 null 时是什么意思,不是时又是什么意思?
  3. 这个方法接受的父参数是什么?

最佳答案

1: LayoutInflater 获取您的布局 XML 文件并根据其内容创建不同的 View 对象。

2:适配器是为重用 View 而构建的,当 ScrollView 以使其不再可见时,它可以用于出现的新 View 之一。这个重用的 View 是 convertView .如果为null,则表示没有回收的View,我们必须创建一个新的,否则我们应该使用它来避免创建一个新的。

3:parent提供,以便您可以将 View 膨胀到适当的布局参数中。

所有这些都可以用来有效地创建将出现在列表中的 View (或其他需要适配器的 View ):

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被重复使用。

关于android - 创建您自己的自定义适配器时,getView() 方法如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10120119/

相关文章:

android - 状态 422 不可处理的实体删除 Android 客户端中的 json 请求

android - 将动态序列化名称与 gson 匹配

java - android 中自定义 ListView 中的按钮监听器检测错误?

java - 设置 TextSpinner 适配器

安卓绘图填充工具

java - 从 JAR/Lib 启动 Activity

java - FireBase 实时数据库需要太多时间来检索 `ListView` 数据

android - 使用选择器和 isEnabled() 禁用 ListView 项

android - 在 Android 中以编程方式更改 ScrollView scrollBarStyle

android - 如何在android中的getview()方法中多次动态创建xml布局?