android - 使用数据绑定时是否还需要使用 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的时候也需要使用一些类似的吗?如果是,如何?谢谢
解决方案
试试这个为你的布局充气机
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)
推荐阅读
- python - 在数据框中添加列
- c# - 如何在 vuforia AR 上修复(锁定)我的图像模型?
- html - unable to change text color in ion-option when interface="popover"
- azure-active-directory - Kubernetes 和 AAD 身份验证
- angular - Angular SharePoint 2016 自定义列表显示数据
- html - Bind a value to the data-placeholder attribute in Angular 6
- sql - Foreach row, update another table row if exist else insert a new record
- javascript - ReactJS + D3:解析本地 CSV 文件并使用 d3-request 将其传递给状态
- mongodb - 如何找到空的使用mongodb?
- php - Dynamic insert the template to the base template