[英]cannot implements with the onBindViewHolder in my class extends RecyclerView.Adapter
I just join this forum within a week and I have encountered a problem with RecyclerView.Adapter in Android.我在一周内加入了这个论坛,我在 Android 中遇到了 RecyclerView.Adapter 的问题。
By following the sample codes and the documentation, I tried to build a custom adapter class by myself and it stuck at one of the methods inherited from its superclass, RecyclerView.Adapter.通过遵循示例代码和文档,我尝试自己构建一个自定义适配器类,但它坚持使用从其超类 RecyclerView.Adapter 继承的方法之一。 Although I write an inner class inherited the viewholder just like the sample code, it still have errors when it comes to the onBindViewHolder()虽然我写的内部类和示例代码一样继承了viewholder,但是在onBindViewHolder()的时候还是有错误
here is my code of the inner class:这是我的内部类代码:
public static class ViewHolder extends RecyclerView.ViewHolder{
private final TextView tvTitle,tvDate,tvTime;
public ViewHolder(View v){
super(v);
Log.d(TAG,"building view holder");
tvTitle=v.findViewById(R.id.item_tvTitle);
tvDate=v.findViewById(R.id.item_tvDate);
tvTime=v.findViewById(R.id.item_tvTime);
//set onclick listener to start another activity
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
public TextView getTvTitle(){return tvTitle;}
public TextView getTvDate(){return tvDate;}
public TextView getTvTime(){return tvTime;}
}
here is my code of the adapter:这是我的适配器代码:
public class EventAdapter extends RecyclerView.Adapter {
private static final String TAG="EventAdapter";
private Event[] dataset;
public static class ViewHolder extends RecyclerView.ViewHolder{
private final TextView tvTitle,tvDate,tvTime;
public ViewHolder(View v){
super(v);
Log.d(TAG,"building view holder");
tvTitle=v.findViewById(R.id.item_tvTitle);
tvDate=v.findViewById(R.id.item_tvDate);
tvTime=v.findViewById(R.id.item_tvTime);
//set onclick listener to start another activity
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
public TextView getTvTitle(){return tvTitle;}
public TextView getTvDate(){return tvDate;}
public TextView getTvTime(){return tvTime;}
}
public EventAdapter(List<Event> dataset){
Log.d(TAG,"Constructor, converting list to array");
this.dataset=dataset.toArray(new Event[dataset.size()]);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup container,int viewType){
Log.d(TAG,"onCreateViewHolder");
View v= LayoutInflater.from(container.getContext()).inflate(R.layout.item_event,container,false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, final int position){
Log.d(TAG,"onBindViewHolder");
viewHolder.getTvTitle().setText("Title: "+dataset[position].getTitle());
viewHolder.getTvDate().setText("Date: "+dataset[position].getDate());
viewHolder.getTvTime().setText("Time: "+dataset[position].getTime());
}
@Override
public int getItemCount(){return dataset.length;}
}
And here are the errors it shows:这是它显示的错误:
1. class 'EventAdapter'(which is my class inherited from the adapter) must either declared as abstract or implements abstract method onBindViewHolder(VH,int) in 'Adapter'
2. method(means the onBindViewHolder) does not override or implement a method from a supertype
Thanks for solving my problem谢谢你解决我的问题
So, to successfully compile, change所以,要成功编译,改变
public class EventAdapter extends RecyclerView.Adapter<EventAdapter.ViewHolder>
and和
public void onBindViewHolder(EventAdapter.ViewHolder viewHolder, final int position)
public class EventAdapter extends RecyclerView.Adapter<EventAdapter.ViewHolder> {
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return null;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return 0;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(@NonNull View itemView) {
super(itemView);
}
}
} }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.