android–RecyclerView.Adapter没有看到overBided onBindViewHolder

android–RecyclerView.Adapter没有看到overBided onBindViewHolder,第1张

概述我在我的项目中使用DataBindings和RecyclerView.我有RecyclerView的基础适配器.看起来像这样publicabstractclassBaseAdapter<TextendsViewDataBinding>extendsRecyclerView.Adapter<BaseAdapter.ViewHolder>{publicBaseAdapter(){}publicclassViewHold

我在我的项目中使用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 – RecyclerView.Adapter没有看到overBided onBindViewHolder全部内容,希望文章能够帮你解决android – RecyclerView.Adapter没有看到overBided onBindViewHolder所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1096732.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存