public class CustomAdapter extends BaseAdapter
我找到了扩展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());
我的问题是view == null
?
为什么我们需要代码if (view == null) {
}
谢谢
答案 0 :(得分:0)
对于listView中的第一项,View将为null。它需要为第一个项目充气。
请随意提出任何疑问。
答案 1 :(得分:0)
Android重新循环View对象以最小化对象创建和内存使用。传递给您的视图将为null,在这种情况下您需要创建它,或者视图将为非null,这意味着它已被重新循环。重新循环的视图是您之前可能创建的视图,但现在可用于其他目的。
这方面的一个很好的例子是listview。列表可以包含许多元素,例如100.然而,屏幕可能只显示列表中的10个项目。因此,当您滚动屏幕时,屏幕上不再显示项目的视图可能会传递给您重复使用。这是重新循环。
答案 2 :(得分:0)
ListView通常包含的数据多于显示的行数。如果用户滚动列表,则行和它们相关的视图将滚动到可见区域之外。表示行的Java对象可以重用于新显示的行。
如果Android确定表示行的View不再可见,则允许getView()方法通过convertView参数重用它。
性能优化适配器将新数据分配给convertView。这样可以避免膨胀XML文件并创建新的Java对象。
如果没有View可供重用,Android会将null传递给convertView参数。因此,适配器实现需要检查这一点。
答案 3 :(得分:0)
对于列表视图,我们必须为每个项目提供视图,同时我们还必须填写内容。在大多数情况下,在具有不同内容的每个项目中将重复相同的视图。因此,在第一次getView
方法中,我们将检查,如果view为null,那么我们应该给视图充气并填充内容并返回。第二次,视图不会为空。因此,您可以重复使用或提供不同的视图。