syxme
@syxme

Как объявить переменную класса Generic не зная его типа?

Есть абстрактный класс
public abstract class Adapter<T> {
            public abstract T onCreateViewHolder(ViewGroup parent);
            public abstract void onBindViewHolder(T holder, int position);
            public abstract int getItemCount();
}


Использую его примерно так:
public class AdapterAudioList: Adapter<VListView> {

        PlayList list;
        public AdapterAudioList(PlayList list){
            this.list = list;
        }
        public override VListView onCreateViewHolder(ViewGroup parent) {
            return new VListView();
        }

        public override void onBindViewHolder(VListView holder, int position) {
            holder.setLabel(list.getAudio(position).artist);
            holder.setLabel2(list.getAudio(position).title);
        }
        public override int getItemCount() {
            return 500;
        }
    }


Инициализирую
AdapterAudioList listx = new AdapterAudioList(list);
recyclerView1.setAdapter(listx);


private Adapter adapter;
 public void setAdapter(Adapter adb) {
            adapter = adb;
}

Вот сейчас всё не работает, я пробовал наследовать от пустого класса Adapter и кастовать его но получал null.
Вопрос, как всё правильно это сделать ?
Еще пробовал так делать, но всё равно не кастовалось, может я и не правильно кастовал)
public abstract class BaseElement :UserControl {}

public abstract class Adapter<T>:BaseElement {
            public abstract T onCreateViewHolder(ViewGroup parent);
            public abstract void onBindViewHolder(T holder, int position);
            public abstract int getItemCount();
}
  • Вопрос задан
  • 106 просмотров
Пригласить эксперта
Ответы на вопрос 1
yarosroman
@yarosroman Куратор тега C#
C# the best
Универсальную переменную вы не объявите. А вот создать генетик и работать с ним можно через рефлексию.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы