Кодът е по-долу. 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);
}
}