Android RecyclerView.Adapter未看到重写的onBindViewHolder方法?

Android RecyclerView.Adapter未看到重写的onBindViewHolder方法?,android,android-recyclerview,Android,Android Recyclerview,我在项目中使用数据绑定和RecyclerView。 我有一个用于RecyclerView的基本适配器。看起来像这样 public abstract class BaseAdapter<T extends ViewDataBinding> extends RecyclerView.Adapter<BaseAdapter.ViewHolder> { public BaseAdapter() {} public class ViewHolder extend

我在项目中使用数据绑定和RecyclerView。 我有一个用于RecyclerView的基本适配器。看起来像这样

public abstract class BaseAdapter<T extends ViewDataBinding> extends RecyclerView.Adapter<BaseAdapter.ViewHolder> {

    public BaseAdapter() {}

    public class ViewHolder extends RecyclerView.ViewHolder {

        public T binding;

        public ViewHolder(View view) {
            super(view);
            binding = DataBindingUtil.bind(view);
        }
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        ... code ...
        }

}
BaseAdapterExtended似乎没有这种方法,但他确实存在。 如果我改变

public void onBindViewHolder(ViewHolder holder, int position)

投影编译良好,但类型绑定将是ViewDataBinding,而不是BaseAdapterExtendedBinding。为什么会这样?有什么想法吗?

对我来说很好! //这是我的观点

@Override
    public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int i) {
        MyViewHolder myViewHolder1 = (MyViewHolder)viewHolder;
        myViewHolder1.like.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(context, "yay" + i, Toast.LENGTH_SHORT ).show();
            }
        });
    }
在这方面:

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    super.onBindViewHolder(holder, position);
}

ViewHolder替换为BaseAdapterExtended。ViewHolder

在我的情况下,我忘记了参数化我的超类。创建类时,我还没有创建
ViewHolder
,除了方法上的错误之外,它是非常允许的。即:

public class FooAdapter extends RecyclerView.Adapter {
不得不改成

public class FooAdapter extends RecyclerView.Adapter<FooAdapter.FooViewHolder> {
公共类FooAdapter扩展了RecyclerView.Adapter{
无论如何都需要这样做,但我得到的唯一编译器错误是在
onBindViewHolder

中,我刚刚找到了这个奇怪问题的原因。这也发生在我的项目中,但仅适用于参数化的适配器,如您的适配器。所有其他适配器都看到了BindViewHolder()方法,而无需在类中显式指定ViewHolder。解决方案是使用任意随机参数类型对ViewHolder类进行参数化,这看起来像是一个bug

public abstract class BaseAdapter<T extends ViewDataBinding> extends RecyclerView.Adapter<BaseAdapter.ViewHolder> {

public BaseAdapter() {}

public class ViewHolder<RandomTypeNotUsed> extends RecyclerView.ViewHolder {

    public T binding;

    public ViewHolder(View view) {
        super(view);
        binding = DataBindingUtil.bind(view);
    }
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    ... code ...
    }
公共抽象类BaseAdapter扩展了RecyclerView.Adapter{ 公共BaseAdapter(){} 公共类ViewHolder扩展了RecyclerView.ViewHolder{ 公共文件的装订; 公共视图持有者(视图){ 超级(视图); binding=DataBindingUtil.bind(视图); } } @凌驾 公共无效onBindViewHolder(ViewHolder,int位置){ …代码。。。 }
}

baseadapteredextended
中,ViewHolder的导入是什么?为什么在
baseadapteredextended
中有一个名为
GamesListAdapter
的构造函数?对不起,我重命名了对象。你能解决你的问题吗?我已经有整整一周的时间遇到这个问题了,这让我发疯了:-/为我工作能解决它吗?
public class FooAdapter extends RecyclerView.Adapter {
public class FooAdapter extends RecyclerView.Adapter<FooAdapter.FooViewHolder> {
public abstract class BaseAdapter<T extends ViewDataBinding> extends RecyclerView.Adapter<BaseAdapter.ViewHolder> {

public BaseAdapter() {}

public class ViewHolder<RandomTypeNotUsed> extends RecyclerView.ViewHolder {

    public T binding;

    public ViewHolder(View view) {
        super(view);
        binding = DataBindingUtil.bind(view);
    }
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    ... code ...
    }