RecyclerView 适配器看不到 ViewHolder

RecyclerView Adapter don't see ViewHolder

我正在尝试根据 MVP 标准开发一个项目。在我遵循的指南中,作者创建了单独的 ViewHolder class。我也尝试这样做,但 Adapter 拒绝使用单独的 ViewHolder。

有 2 个错误

Cannot resolve symbol 'LessonCardView'

'onCreateViewHolder(ViewGroup, int)' in RVAdapter clashes with 'onCreateViewHolder(ViewGroup, int)' in 'android.support.v7.widget.RecyclerView.Adapter'; attempting to use incompatible return type

RVAdapter.java

public class RVAdapter extends RecyclerView.Adapter<RVAdapter.LessonCardViewHolder> {

    private String[] mDataset;

    public RVAdapter(String[] dataset) {
        mDataset = dataset;
    }

    @Override
    public LessonCardViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        return new LessonCardViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.lessons_item_card, parent, false));
    }

    @Override
    public void onBindViewHolder(LessonCardViewHolder holder, int position) {
    
    }

    @Override
    public int getItemCount() {
        return mDataset.length;
    }
}

LessonCardViewHolcer.java

public class LessonCardViewHolder extends RecyclerView.ViewHolder implements LessonCardView {

    private final TextView lessonCardText;

    public LessonCardViewHolder(View itemView) {
        super(itemView);
        lessonCardText = (TextView) itemView.findViewById(R.id.lesson_card_view);
    }

    @Override
    public void setLessonCardText(String text) {
        lessonCardText.setText(text);
    }
}

我在 RVAdapter 中创建了继承自 LessonCardView 的子class ViewHolder。错误消失了。但我不确定这是否正确。如果它适用于其他人,那么我做错了。

从此更改您的适配器声明

public class RVAdapter extends RecyclerView.Adapter<RVAdapter.LessonCardViewHolder> {

至此

// import here your view holder

public class RVAdapter extends RecyclerView.Adapter<LessonCardViewHolder> {

从您提供片段的方式来看,这些 类 似乎位于不同的文件中,或者未正确嵌套在同一文件中。

您是否尝试过使用 RecyclerView.Adapter<LessonCardViewHolder> 而不是 RecyclerView.Adapter<RVAdapter.LessonCardViewHolder>

LessonCardViewHolder 应该是 RVAdapter

中的嵌套 class

这是完整的解决方案 - Recyclerview Adapter class 示例

public class IAdapter extends RecyclerView.Adapter<IAdapter.ViewHolder> {


Context context;
ArrayList<Model> modelList;


public ImagesAdapter(Context context,ArrayList<Model> modelList) {
    this.context=context;
    this.modelList=modelList;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_items, parent, false);
        return new ViewHolderImages(view);
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
        Model model=photo.get(position);
        userViewHolder.textView.setText(model.getTitle());

}

public class ViewHolder extends RecyclerView.ViewHolder{

    TextView textView;
    public ViewHolderImages(View itemView) {
        super(itemView);
        textView=(TextView)itemView.findViewById(R.id.textView);
    }
}

@Override
public int getItemCount() {
    return modelList.size();
}

}