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