У меня есть абстрактный класс адаптера из внешней библиотеки:Android - «Нет ограждающего экземпляр„some.abstract.class.name“типа класса находится в области видимости» ошибки при выдвижении
public abstract class DragItemAdapter<T, VH extends DragItemAdapter.ViewHolder> extends RecyclerView.Adapter<VH> {
//Their other codes
public class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(final View itemView, int handleResId) {
super(itemView);
//The rest of their codes
}
}
}
и у меня есть адаптер продлен этот адаптер
public class ChecklistAdapter extends DragItemAdapter<Pair<Integer, SomeClass>, ViewHolderForChecklist> {
@Override
public ViewHolderForChecklist onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
grab = R.id.grab;
return new ViewHolderForChecklist(view,grab);
}
}
Если мой ViewHolderForChecklist
является внутренний класс ChecklistAdapter
он прекрасно работает. Но если перенести ViewHolderForChecklist
на совершенно новый класс
public class ViewHolderForChecklist extends DragItemAdapter<Pair<Long, SomeClass>, ViewHolderForChecklist>.ViewHolder { // The error is at this line
public ViewHolderForChecklist(final View itemView, int grab) {
super(itemView, grab);
}
@Override
public void onItemClicked(View view) {
}
@Override
public boolean onItemLongClicked(View view) {
return true;
}
}
Существует ошибка в реальном времени
No enclosing instance of type 'library.package.name.DragItemAdapter' class is in scope
и ошибка при компиляции
error: an enclosing instance that contains DragItemAdapter.ViewHolder is required
Использование «движение» от рефрактор имеет ту же проблему. Я еще новичок в этом виде ... «вложенной-класса», так что я не знаю, что это неправильно с этим или какого рода информацию я должен включать в себя больше.
Спасибо!
Вид подобного, посмотрите: http://stackoverflow.com/a/22117161/3931910 – YakuZa