onCreateViewHolder of FirestorePagingAdapter not overriding

45 Views Asked by At

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);
    }
}
1

There are 1 best solutions below

2
Frank van Puffelen On

Your adapter has:

public FragmentTodosManejo.genericHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

So your onCreateViewHolder returns a FragmentTodosManejo.genericHolder.

If you look at the example in the documentation, its onCreateViewHolder looks like this:

public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

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:

public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {