简体   繁体   English

无法在我的类中使用 onBindViewHolder 实现 extends RecyclerView.Adapter

[英]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.

相关问题 从 RecyclerViewAdapter 启动BottomSheet,它在onBindViewHolder 内扩展了RecyclerView.Adapter - Launching BottomSheet from a RecyclerViewAdapter that extends with RecyclerView.Adapter inside onBindViewHolder 如何在扩展RecyclerView.Adapter的类中重新绑定视图 - How to rebind view in a class that extends RecyclerView.Adapter 无法解析 Recyclerview.Adapter 的适配器类上的 getFilter() 方法 - Cannot resolve getFilter() method on adapter class of Recyclerview.Adapter RecyclerView.Adapter类查询 - RecyclerView.Adapter Class Query 如何从RecyclerView.Adapter的OnBindViewHolder中的另一个列表中提取列表 - how to extract a list from another list in OnBindViewHolder in RecyclerView.Adapter RecyclerView.Adapter中的函数viewholder类 - function viewholder class in RecyclerView.Adapter 为什么在 RecyclerView.Adapter 的 onBindViewHolder 中添加 OnClickListener 被认为是不好的做法? - Why is adding an OnClickListener inside onBindViewHolder of a RecyclerView.Adapter considered bad practice? 无法识别我在 RecyclerView.Adapter 中创建的方法 - Cannot recognize a method I created in RecyclerView.Adapter 如何从RecyclerView.Adapter类获取ArrayList - How get ArrayList from RecyclerView.Adapter class 在ViewHolder内部类中访问RecyclerView.Adapter数据 - Accessing RecyclerView.Adapter data in ViewHolder Inner class
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM