例如,我创建了一个视图
LinearLayout rowTemplate = new LinearLayout(getContext());
然后在回收者的观察者中,我尝试做以下
return new TransactionViewHolder(rowTemplate);
这可以吗? 。通常我们会做以下
return new TransactionViewHolder(((RelativeLayout) inflater.inflate(R.layout.employee_item, parent, false)));
我不确定如何以这样的方式给视图充气,以便RV也可以将此rowtemplate附加到自身中。我实际上打算做这样的事情,并想知道是否有人对此有任何暗示
答案 0 :(得分:0)
如果没有inflater.inflate(viewResource,parent,false),它就无法工作。原因在于,即使我们已经创建了一个视图,它也会是一个孤立在RV中的孤儿,因为我们还没有将它附加到RV的父级。
这是一个很好的解决方法,可以保持房车的回收利用,并展现出理想的行为
// Create new views (invoked by the layout manager)
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
if (viewType == TYPE_TRANSACTION) {
return new TransactionViewHolder(((RelativeLayout) inflater.inflate(R.layout.transaction_item, parent, false)), ((LinearLayout) createRowTemplate(templateTransaction)));
} else {
return new LoadHolder(inflater.inflate(R.layout.load_item, parent, false));
}
}
在TransactionViewHolder构造函数中执行以下操作。
public TransactionViewHolder(RelativeLayout rowRootView, LinearLayout rowTemplate) {
super(rowRootView);
this.rowRootView = rowRootView;
this.rowRootView.addView(rowTemplate);
rowRootView.setOnClickListener(this);
}