【问题标题】:onBindViewHolder must be declared abstractonBindViewHolder 必须声明为抽象的
【发布时间】:2016-01-31 23:38:30
【问题描述】:

我收到错误:“FlickrRecyclerViewAdapter”类必须声明为抽象或在“适配器”中实现方法抽象方法 onBindViewHolder(VH, int)

虽然这个错误应该是不言自明的,但我已经实现了 onBindViewHolder 并且错误仍然存​​在。

相关代码 -

public class FlickrRecyclerViewAdapter extends RecyclerView.Adapter {
    private List<Photo> mPhotosList;
    private Context mContext;

    public FlickrRecyclerViewAdapter(Context context, List<Photo> photosList) {
        mContext = context;
        this.mPhotosList = photosList;
    }

    @Override
    public void onBindViewHolder(FlickrImageViewHolder flickrImageViewHolder, int i) {

            Photo photoItem = mPhotosList.get(i);
            Picasso.with(mContext).load(photoItem.getmImage())
                    .error(R.drawable.placeholder)
                    .placeholder(R.drawable.placeholder)
                    .into(flickrImageViewHolder.thumbnail);

        }
    }

谢谢

【问题讨论】:

    标签: java android android-studio android-recyclerview picasso


    【解决方案1】:

    适配器的定义是

    RecyclerView.Adapter<VH extends android.support.v7.widget.RecyclerView.ViewHolder>
    

    其中VHViewHolder 的子类。因此,您可以更改 onBindViewHolder 的签名,例如

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder flickrImageViewHolder, int i) {
    

    或改变

    extends RecyclerView.Adapter {
    

    extends RecyclerView.Adapter<FlickrImageViewHolder> {
    

    【讨论】:

      【解决方案2】:

      您扩展的RecyclerView.Adapter 有一个方法:

      public void onBindViewHolder(RecyclerView.ViewHolder holder, int position)
      

      你必须重写。使用您正在使用的方法签名,您必须像这样扩展:

      public class FlickrRecyclerViewAdapter extends RecyclerView.Adapter<FlickrImageViewHolder>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-24
        • 2015-02-28
        • 2017-08-17
        • 2015-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多