im giving maintenance on a code that broke recently, its trying to retrieve data from firebase using FirestorePagingAdapter, it say that the function onCreateViewHolder does not override a method from its superclass
the FirestorePagingAdapter code that is giving error
adapter2 = new FirestorePagingAdapter<Modelo_Racao, FragmentTodosManejo.genericHolder>(options2) {
@NonNull
@Override
public FragmentTodosManejo.genericHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.manejo_item, parent, false);
return new FragmentTodosManejo.genericHolder(view);
}
the item code is the following
public class Modelo_Racao {
private String nome;
private String tipo;
private String quantidade;
private String dataInicio;
private String dataFim;
private String animalNaoCadastradoRacao;
private String obsRacao;
private String spinnerLoteRacao;
private String spinnerAnimalRacao;
public Modelo_Racao(){}
public Modelo_Racao(String nome, String tipo, String quantidade, String dataInicio, String dataFim, String animalNaoCadastradoRacao, String obsRacao, String spinnerLoteRacao, String spinnerAnimalRacao) {
this.nome = nome;
this.tipo = tipo;
this.quantidade = quantidade;
this.dataInicio = dataInicio;
this.dataFim = dataFim;
this.animalNaoCadastradoRacao = animalNaoCadastradoRacao;
this.obsRacao = obsRacao;
this.spinnerLoteRacao = spinnerLoteRacao;
this.spinnerAnimalRacao = spinnerAnimalRacao;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getTipo() {
return tipo;
}
public void setTipo(String tipo) {
this.tipo = tipo;
}
public String getQuantidade() {
return quantidade;
}
public void setQuantidade(String quantidade) {
this.quantidade = quantidade;
}
public String getDataInicio() {
return dataInicio;
}
public void setDataInicio(String dataInicio) {
this.dataInicio = dataInicio;
}
public String getDataFim() {
return dataFim;
}
public void setDataFim(String dataFim) {
this.dataFim = dataFim;
}
public String getAnimalNaoCadastradoRacao() {
return animalNaoCadastradoRacao;
}
public void setAnimalNaoCadastradoRacao(String animalNaoCadastradoRacao) {
this.animalNaoCadastradoRacao = animalNaoCadastradoRacao;
}
public String getObsRacao() {
return obsRacao;
}
public void setObsRacao(String obsRacao) {
this.obsRacao = obsRacao;
}
public String getSpinnerLoteRacao() {
return spinnerLoteRacao;
}
public void setSpinnerLoteRacao(String spinnerLoteRacao) {
this.spinnerLoteRacao = spinnerLoteRacao;
}
public String getSpinnerAnimalRacao() {
return spinnerAnimalRacao;
}
public void setSpinnerAnimalRacao(String spinnerAnimalRacao) {
this.spinnerAnimalRacao = spinnerAnimalRacao;
}
}
the ItemViewHolder code is the following
private class genericHolder extends RecyclerView.ViewHolder {
private final TextView title;
private final ImageView icon;
private final TextView assunto;
private final TextView preView;
private final TextView date;
private final TextView status;
public genericHolder(@NonNull View itemView) {
super(itemView);
title = itemView.findViewById(R.id.icon_item_manejo_user);
icon = itemView.findViewById(R.id.icon_item_manejo);
assunto = itemView.findViewById(R.id.item_manejo_assunto);
preView = itemView.findViewById(R.id.item_manejo_pre_view);
date = itemView.findViewById(R.id.text_date_manejo);
status = itemView.findViewById(R.id.status_item_manejo);
}
}
Your adapter has:
So your
onCreateViewHolderreturns aFragmentTodosManejo.genericHolder.If you look at the example in the documentation, its
onCreateViewHolderlooks like this:So this returns an
ItemViewHolder. Since your code returns a different class, it doesn't match the method in its parent. You have to declare your override to return the same type:ItemViewHolder: