求教Android中RecyclerView中的ViewHolder的一些问题
网上的适配器的代码都是这么写的
public class NewAdapter extends RecyclerView.Adapter <NewAdapter.ViewHolder> {
private List<String> data;
static class ViewHolder extends RecyclerView.ViewHolder {
Button number;
Button name;
public ViewHolder(View view) {
super(view);
number=view.findViewById(R.id.text1);
name=view.findViewById(R.id.text2);
}
}
public NewAdapter(List<String> data) {
this.data=data;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler,parent,false);
ViewHolder holder=new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
String name=data.get(position);
holder.number.setText(String.valueOf(position));
holder.name.setText(name);
}
@Override
public int getItemCount() {
return data.size();
}
}
然后ViewHolder有点搞不明白,很多人都说ViewHolder可以节省findViewByID的使用,提高性能。但是每次滚动显示一个新Item的时候不都会调用onCreateViewHolder方法吗?这样不还是需要每次都调用findViewById,这样怎么就提升性能?
还有想求教一下,显示一个Item的顺序是 先调用onCreateViewHolder,得到新的ViewHolder,然后将ViewHolder作为参数调用onBindViewHolder,来将其中绑定的实例置上数据吗?