RecyclerView适配器看不到ViewHolder

问题描述 投票:0回答:4

我正在尝试按照MVP标准开发一个项目。在我遵循的指南中,作者创建了单独的ViewHolder类。我试图做同样的事,但适配器拒绝使用单独的ViewHolder。

有2个错误

无法解析符号'LessonCardView'

RVAdapter中的'onCreateViewHolder(ViewGroup,int)'与'android.support.v7.widget.RecyclerView.Adapter'中的'onCreateViewHolder(ViewGroup,int)'冲突;尝试使用不兼容的返回类型

RV adapter.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;
    }
}

lesson card VIE WHO列出而.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的子类ViewHolder。错误消失了。但我不确定这是否正确。如果它适用于其他人,那么我做错了。

android android-recyclerview android-viewholder
4个回答
0
投票

从此更改适配器声明

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

对此

// import here your view holder

public class RVAdapter extends RecyclerView.Adapter<LessonCardViewHolder> {

0
投票

从您提供片段的方式来看,这些类在不同的文件中,或者没有正确嵌套在同一个文件中。

你尝试过使用RecyclerView.Adapter<LessonCardViewHolder>而不是RecyclerView.Adapter<RVAdapter.LessonCardViewHolder>吗?


0
投票

LessonCardViewHolder应该是RVAdapter中的嵌套类


0
投票

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

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();
}

}
© www.soinside.com 2019 - 2024. All rights reserved.