Android 扩展BaseAdapter时,视图何时变为空?

Android 扩展BaseAdapter时,视图何时变为空?,android,android-layout,Android,Android Layout,我发现了一个扩展BaseAdapter的代码 我的问题是什么时候view==null 为什么我们需要代码if(view==null){} 感谢listView中的第一项,该视图将为空。第一项需要充气 请随时询问任何进一步的疑问。Android重新循环查看对象,以最小化对象创建和内存使用。传递给您的视图将为null(在这种情况下,您需要创建它),或者视图将为非null(这意味着它已被重新循环)。重新循环的视图可能是您先前创建的视图,但现在可以用于其他目的 listview就是一个很好的例子。一个列

我发现了一个扩展BaseAdapter的代码

我的问题是什么时候
view==null

为什么我们需要代码
if(view==null){
}


感谢listView中的第一项,该视图将为空。第一项需要充气


请随时询问任何进一步的疑问。

Android重新循环查看对象,以最小化对象创建和内存使用。传递给您的视图将为null(在这种情况下,您需要创建它),或者视图将为非null(这意味着它已被重新循环)。重新循环的视图可能是您先前创建的视图,但现在可以用于其他目的


listview就是一个很好的例子。一个列表可能有很多元素,比如100。但是,屏幕可能仅显示列表中的10项。因此,当您滚动屏幕时,屏幕上不再显示的项目的视图可能会传递给您以供重复使用。这是重新循环

ListView通常包含比显示行数更多的数据。如果用户滚动列表,则行及其关联视图将滚动出可见区域。表示行的Java对象可以重新用于新可见的行

如果Android确定表示行的视图不再可见,则允许getView()方法通过convertView参数重用该视图

性能优化适配器将新数据分配给convertView。这避免了膨胀XML文件和创建新的Java对象


如果没有视图可供重用,Android将向convertView参数传递null。因此,适配器实现需要对此进行检查。

对于列表视图,我们必须为每个项目提供视图,并且还必须填充内容。在大多数情况下,相同的视图将在具有不同内容的每个项目中重复。因此,在第一次使用
getView
方法时,我们将检查,如果视图为空,那么我们应该膨胀视图并填充内容并返回。第二次,视图将不会为空。因此,您可以重复使用或提供不同的视图。

非常感谢您的回复
public class CustomAdapter extends BaseAdapter
        public View getView(int index, View view, final ViewGroup parent) {

            if (view == null) {
                LayoutInflater inflater = LayoutInflater.from(parent.getContext());
                view = inflater.inflate(R.layout.single_list_item, parent, false);
            }
    }

 TextView textView = (TextView) view.findViewById(R.id.tv_string_data);
        textView.setText(dataModel.getName());