Android RecyclerView适配器出现错误“;RecycleAdapter类型的层次结构不一致;

Android RecyclerView适配器出现错误“;RecycleAdapter类型的层次结构不一致;,android,eclipse,android-recyclerview,Android,Eclipse,Android Recyclerview,我正在尝试将新的RecyclerView添加到Fragement中的项目中。我正在看一个关于这个问题的视频教程。当我尝试为RecyclerView创建适配器时,我开始出现此错误。我正在使用EclipseJuno。我想不出这个问题。请帮忙 我的代码: public class RecycleAdapter extends RecyclerView.Adapter<RecycleAdapter.MyViewHolder> { private LayoutInflater inflato

我正在尝试将新的
RecyclerView
添加到
Fragement
中的项目中。我正在看一个关于这个问题的视频教程。当我尝试为
RecyclerView
创建适配器时,我开始出现此错误。我正在使用EclipseJuno。我想不出这个问题。请帮忙

我的代码:

public class RecycleAdapter extends RecyclerView.Adapter<RecycleAdapter.MyViewHolder> {

private LayoutInflater inflator;
List <Item> data = Collections.EMPTY_LIST;

public RecycleAdapter(Context context, List<Item> data){
    inflator = LayoutInflater.from(context);
}

@Override
public int getItemCount() {
    // TODO Auto-generated method stub
    return data.size();
}


@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int arg1) {
    View view = inflator.inflate(R.layout.row_staggered_new, parent, false);
    MyViewHolder holder = MyViewHolder(view);
    return holder;
}

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
    Item current = data.get(position);
    holder.text.setText(current.title);
    holder.image.setImageResource(current.image);

}

public static class MyViewHolder extends RecyclerView.ViewHolder{

    public ImageView image;
    public TextView text;

    public MyViewHolder(View itemView) {
        super(itemView);
        image = (ImageView) itemView.findViewById(R.id.imageView1);
        text = (TextView) itemView.findViewById(R.id.textview1);
    }
}
}
公共类RecycleAdapter扩展了RecyclerView.Adapter{ 私人充气机; 列表数据=集合。空列表; 公共RecycleAdapter(上下文、列表数据){ 充气器=从(上下文)开始充气; } @凌驾 public int getItemCount(){ //TODO自动生成的方法存根 返回data.size(); } @凌驾 公共MyViewHolder onCreateViewHolder(视图组父级,int arg1){ 视图=充气机。充气(R.layout.row\u交错\u新建,父级,错误); MyViewHolder=MyViewHolder(视图); 报税表持有人; } @凌驾 公共无效onBindViewHolder(MyViewHolder,int位置){ 项目当前=数据获取(位置); holder.text.setText(当前名称); holder.image.setImageResource(current.image); } 公共静态类MyViewHolder扩展了RecyclerView.ViewHolder{ 公众形象; 公共文本查看文本; 公共MyViewHolder(查看项目视图){ 超级(项目视图); image=(ImageView)itemView.findViewById(R.id.imageView1); text=(TextView)itemView.findViewById(R.id.textview1); } } }
MyViewHolder
RecycleAdapter
都给出了错误
“RecycleAdapter类型的层次结构不一致”
。 在<代码>RecycleAdapter的扩展部分,它显示错误
“绑定不匹配:RecycleAdapter.MyViewHolder类型不是RecycleView.Adapter类型的绑定参数的有效替代品”


有指针吗?

onBindViewHolder
方法中,您不能将RecyclerView.ViewHolder类直接强制转换为
MyViewHolder
,因为后者是前者的扩展

您需要显式地执行强制转换,即

public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
    MyViewHolder holder = (MyViewHolder)viewHolder;
    ...
}
编辑

您有多个编译问题,但您提到的问题是因为您扩展了错误的类类型。类应该像这样扩展

extends RecyclerView.Adapter<RecyclerView.ViewHolder>
扩展了RecyclerView.Adapter

我发现了问题。问题是我使用的是旧版本和v4支持库,它不包含类android.support.v4.view.ScrollingView类。我用新版本替换了旧的v4库,错误消失了


我发现了问题。问题是我使用的是旧版本和v4支持库,它不包含类android.support.v4.view.ScrollingView类。我用新版本替换了旧的v4库,错误消失了

这对我很有用,除了答案:

Eclipse将包括一个名为“appcompat_v7”的项目,我们也应该替换它的libs。

还有一个解决方案是

  • 从库中删除jar文件
  • 将android-support-v7-appcompat从sdk复制到工作区中→ 额外的→ 安卓→ 支持-v7→ appcompat
  • 您将在appcompat中找到v4库
  • 右键单击appcompat,然后将其标记为库(如果不是库)
  • 现在右键单击项目,转到java构建路径,将appcompat添加为库

  • 享受吧

    这似乎不起作用。我还是犯了同样的错误。。还有其他想法吗?你发布的代码甚至不应该编译!这真的是你正在使用的代码吗?我看到你的代码中到处都是编译错误!对我正在使用这段代码,编译错误与我在问题中提到的相同。在onCreateViewHolder中,我已将此行更改为MyViewHolder=new MyViewHolder(视图);添加缺少的关键字“new”我正在制作一个名为MyViewHolder的自定义ViewHolder。如果我改变这一点,我将如何使用我的自定义viewholder。我恐怕我不可能在这里教你这一点,也无法回答你的问题。下面是一个很好的RecyclerView示例,请研究它:在
    onCreateViewHolder
    方法中,第二行不应该是
    MyViewHolder=new MyViewHolder(view)
    ?我想你错过了
    new
    我的SDK管理器显示我正在使用最新的支持库,但我仍然得到了错误。TIL-添加支持库(删除后)最简单的方法是通过(右键单击项目)->Android工具->添加支持库。。。5年多的android开发经验,我从来都不知道它的存在。。。