首页 > 解决方案 > 使用数据绑定时是否还需要使用 View Holder 模式?

问题描述

我有一个扩展的自定义适配器类ArrayAdapter<Item>。在尝试使用数据绑定之前,我使用了这段代码,它运行良好:

@Override
public View getView(int position, View convertView, @NonNull ViewGroup parent) {
    Item item = getItem(position);
    if (convertView == null) {
        convertView = LayoutInflater.from(context).inflate(R.layout.item, parent, false);
        ViewHolder viewHolder = createViewHolder(convertView);
        convertView.setTag(viewHolder);
    }

    ViewHolder viewHolder = (ViewHolder) convertView.getTag();
    if (item != null) {
        viewHolder.bindItem(item);
    }
    return convertView;
}

但是当我尝试使用数据绑定时:

@Override
public View getView(int position, View convertView, @NonNull ViewGroup parent) {
    View rootView;
    Item item = getItem(position);
    LayoutInflater inflater = LayoutInflater.from(parent.getContext());
    int item = R.layout.item;
    ItemDataBinding dataBinding = DataBindingUtil.inflate(inflater, item, parent, false);
    rootView = dataBinding.getRoot();
    ViewHolder viewHolder = new ViewHolder(dataBinding);
    if (item != null) {
        viewHolder.bindItem(item);
    }
    return rootView;
}

Android Studio 抱怨以下警告:

来自视图适配器的无条件布局膨胀。

请看这个截图

使用Data Binding的时候也需要使用一些类似的吗?如果是,如何?谢谢

标签: androidandroid-arrayadapterandroid-databindingandroid-viewholder

解决方案


试试这个为你的布局充气机

LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)

推荐阅读