gpt4 book ai didi

android - RecyclerView.Adapter 没有看到重写的 onBindViewHolder 方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:53:17 26 4
gpt4 key购买 nike

我在项目中使用 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 扩展类仅绑定(bind)字段类型不同。扩展的 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)

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

最佳答案

在我的例子中,我忘记了参数化我的父类(super class)。在创建类时,我还没有创建 ViewHolder,除了该方法的错误外,它是非常宽松的。即:

public class FooAdapter extends RecyclerView.Adapter {

必须改为

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

这无论如何都需要完成,但我得到的唯一编译器错误是在 onBindViewHolder 中。

关于android - RecyclerView.Adapter 没有看到重写的 onBindViewHolder 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33018052/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com