android – RecyclerView.Adapter没有看到overBided onBindViewHolder

我在我的项目中使用DataBindings和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 ...
        }

}

ViewHolder扩展类只有绑定字段类型不同.
在扩展BaseAdapter类的实现之后:

public class BaseAdapterExtended extends BaseAdapter<BaseAdapterExtendedBinding> {

    public BaseAdapterExtended(ArrayList<Itemmodel> itemmodels) {
        super();
        mData = itemmodels;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        return new ViewHolder(BaseAdapterExtendedBinding.inflate(inflater, parent, false).getRoot());
    }

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

    @Override
    protected View getItemRootView(ViewHolder holder) {
        return holder.binding.item;
    }

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

我有一个编译错误

error: BaseAdapterExtended is not abstract and does not override abstract method onBindViewHolder(BaseAdapter.ViewHolder,int) in Adapter

似乎BaseAdapterExtended没有这种方法,但他存在.
如果我改变

public void onBindViewHolder(ViewHolder holder, int position)

public void onBindViewHolder(BaseAdapter.ViewHolder holder, int position)

预测编译正常,但类型绑定将是ViewDataBinding而不是BaseAdapterExtendedBinding.为什么会这样?有任何想法吗?

解决方法:

在我的情况下,我忘记了参数化我的超类.在创建类时,我还没有创建ViewHolder,除了该方法错误外,它非常宽松.即:

public class FooAdapter extends RecyclerView.Adapter {

不得不改为

public class FooAdapter extends RecyclerView.Adapter<FooAdapter.FooViewHolder> {

无论如何都需要这样做,但我得到的唯一编译器错误是onBindViewHolder.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...