还是报错,说必须实现 onBindViewHolder
时间: 2024-01-11 16:23:53 浏览: 134
非常抱歉,我的前面的回答中有误。在 RecyclerView.Adapter 中,必须实现 onBindViewHolder() 方法,否则会报错。下面是一个正确的实现方法:
```
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<MyData> dataList;
// 在构造函数中初始化数据
public MyAdapter(List<MyData> dataList) {
this.dataList = dataList;
}
// 创建ViewHolder
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_layout, parent, false);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
// 绑定数据
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
MyData data = dataList.get(position);
holder.textView.setText(data.getText());
holder.imageView.setImageResource(data.getImageResId());
}
// 返回item数目
@Override
public int getItemCount() {
return dataList.size();
}
// 自定义ViewHolder
public static class ViewHolder extends RecyclerView.ViewHolder {
public ImageView imageView;
public TextView textView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.image_view);
textView = itemView.findViewById(R.id.text_view);
}
}
}
```
在上面的代码中,我们实现了 onCreateViewHolder()、onBindViewHolder() 和 getItemCount() 三个方法。
- onCreateViewHolder():创建 ViewHolder,即加载 item 的布局,并返回 ViewHolder 对象。
- onBindViewHolder():将数据绑定到 ViewHolder 中的 View 上。
- getItemCount():返回 item 的数量。
在 onBindViewHolder() 方法中,我们先获取当前 item 的数据,然后将数据绑定到 ViewHolder 中的 View 上。
希望这次回答能够帮到你,如果还有问题,欢迎继续提问。
阅读全文