Изграждането на Gradle е неправилно, защото методът @Override не отменя метода от суперклас

Кодът е по-долу. IDE е добре с кода, но gradle отказва да изгражда, казвайки:

TextAdapter не е абстрактен и не замества абстрактния метод onBindViewHolder(TextAdapter.SimpleTextHolder,int) в Adapter public class TextAdapter extends RecyclerView.Adapter {

грешка: методът не отменя или прилага метод от супертип

Знам, че е грешно, защото генерирах метода с Android Studio, така че мисля, че трябва да е грешка в gradle?

Код на адаптер RecyclerView:

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import ...R;
import ...jsonObjects.Nameable;

import java.util.ArrayList;

public class TextAdapter<T extends Nameable> extends RecyclerView.Adapter<TextAdapter.SimpleTextHolder> {

    private ArrayList<T> items;
    private ClickListener<T> clickListener;

    public TextAdapter(ArrayList<T> items, ClickListener<T> onClick) {
        this.items = items;
        this.clickListener = onClick;
    }

    @Override
    public SimpleTextHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.holder_text, parent, false);
        return new SimpleTextHolder(view);
    }

    @Override
    public void onBindViewHolder(SimpleTextHolder holder, int position) {
        holder.itemTitle.setText(items.get(position).getName());
    }


    @Override
    public int getItemCount() {
        return items.size();
    }

    class SimpleTextHolder extends RecyclerView.ViewHolder {

        TextView itemTitle;

        SimpleTextHolder(View itemView) {
            super(itemView);

            itemTitle = itemView.findViewById(R.id.itemTitle);
            itemView.setOnClickListener(v -> clickListener.onClick(items.get(getAdapterPosition())));
        }

    }

    public interface ClickListener<T> {

        void onClick(T item);

    }

}

person der_Fidelis    schedule 09.10.2017    source източник
comment
Ако изобщо, това е грешка в AS, че не показва грешката, Gradle използва нормалния Java компилатор и е много малко вероятно да го прави погрешно. ;-)   -  person Vampire    schedule 10.10.2017
comment
Там текстът за грешка беше подвеждащ, но в крайна сметка, да, беше грешка.   -  person der_Fidelis    schedule 10.10.2017


Отговори (1)


Можете да поправите това, като направите своя SimpleTextHolder клас static, т.е.

static class SimpleTextHolder extends RecyclerView.ViewHolder {
    // ...
}
person Kevin Coppock    schedule 09.10.2017
comment
Ще пробвам и ще ти кажа. Благодаря! - person der_Fidelis; 09.10.2017