初学Android,看了一些代码,基本上适配器的代码都是这么写的
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可以加载Item的布局可以节省findViewByID操作。但是每次当滚动需要显示新的Item都会调用onCreateViewHolder,而每次调用都会创建一个新View让ViewHolder加载,这样不就没有节省吗?
还有就是不太明白onCreateViewHolder的返回值是用到onBindViewHolder上了么。
那样要滚动显示一个Item的步骤是不是先调用onCreateViewHolder,创建出一个ViewHolder,其中包含着要显示的Item中的的Button,TextView一类的实例。然后将这个ViewHolder作为参数调用onBindViewHolder,然后将Item中的Button,TextView置上数据??