Сборка Gradle некорректно завершается ошибкой, поскольку метод @Override не переопределяет метод из суперкласса

Код ниже. IDE работает с кодом, но gradle отказывается строить, говоря:

TextAdapter не является абстрактным и не переопределяет абстрактный метод onBindViewHolder(TextAdapter.SimpleTextHolder,int) в общедоступном классе адаптера TextAdapter extends RecyclerView.Adapter {

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

Я знаю, что это неправильно, потому что я сгенерировал метод с помощью Android Studio, поэтому я думаю, что это должна быть ошибка градиента?

Код адаптера 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