私は自分のプロジェクトでDataBindingsとRecyclerViewを使用します。 私はRecyclerView用のベースアダプターを持っています。このようになります。RecyclerView.AdapterはオーバーライドされたonBindViewHolderを表示しません
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();
}
}
私は次のコンパイルエラーを持っています:BaseAdapterExtendedは、このメソッドをしていないよう
error: BaseAdapterExtended is not abstract and does not override abstract method onBindViewHolder(BaseAdapter.ViewHolder,int) in Adapter
は思えるが、彼は存在しています。 私は罰金コンパイル
public void onBindViewHolder(ViewHolder holder, int position)
public void onBindViewHolder(BaseAdapter.ViewHolder holder, int position)
へのプロジェクションを変更するが、代わりにBaseAdapterExtendedBindingをViewDataBindingされる結合入力した場合。なぜこうなった?何か案は?
何BaseAdapterExtended' 'でViewHolderのインポート? 'BaseAdapterExtended'に' GamesListAdapter'というコンストラクターはなぜありますか? – Blackbelt
申し訳ありません、オブジェクトの名前を変更して – Tiberal
あなたはあなたの問題を解決しましたか、今一週間この問題を抱えていて、それはナットを運転しています: -/ – Strassenrenner