Intereting Posts
Тестирование подписки на покупку IAP / In-App для Android Есть ли способ узнать, были ли получены трансляции LocalBroadcastManager? Android: Как установить свойство пароля в текстовом редакторе? Android ActionBar – нажмите пользовательский вид в нижней части экрана. Почему у меня ошибка при попытке переопределить общий привязку с Guice? (TypeLiteral) Каков «правильный» способ сделать это (если утверждение) Расположение Android SDK Индивидуальные сбои, полученные на устройствах Samsung только с версиями Lollipop 5.0 и 5.1 События подключения клиента Wi-Fi к Wi-Fi Как ограничить высоту раскрывающегося списка Spinner в Android Требуется Gradle версии 1.8. Текущая версия – 1.6 Android: Прозрачность PNG не работает с BitmapFactory.decodeStream (…) и папкой с активами Как обрабатывать AsyncTask onPostExecute при приостановке, чтобы избежать исключения IllegalStateException «Полное действие с использованием» при попытке загрузить в WebView EditText requestFocus ()?

Получение позиции в onCreateViewHolder

Я преобразовываю свой ListView в RecyclerView с помощью библиотеки поддержки v7.

У меня есть 2 разных макета для загрузки в RecyclerView . В ListView я получил позицию элемента в getView() и смог загрузить соответствующий макет для этой строки. Но в RecyclerView у onCreateViewHolder нет параметра позиции.

Есть ли другой способ достичь этого?

PS: В приложении «Входящие» от Google отображаются разные макеты в RecyclerView (может быть). Я не думаю, что они могли использовать ListView из-за улучшения производительности в RecyclerView

 @Override public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { View v=null; MyVO vo = voList.get(???POSITION???); switch(vo.getType()){ case TYPE_1: v = LayoutInflater.from(viewGroup.getContext()) .inflate(R.layout.layout1, viewGroup, false); break; case TYPE_2: v = LayoutInflater.from(viewGroup.getContext()) .inflate(R.layout.layout2, viewGroup, false); break; } return new ViewHolder(v); } 

Solutions Collecting From Web of "Получение позиции в onCreateViewHolder"

Во-первых, переопределите метод getItemViewType :

 @Override public int getItemViewType(int position) { //Implement your logic here MyVO vo = voList.get(position); return vo.getType(); } 

Затем вы можете просто использовать второй параметр onCreateViewHolder :

 @Override public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { View v=null; switch(viewType){ case TYPE_1: v = LayoutInflater.from(viewGroup.getContext()) .inflate(R.layout.layout1, viewGroup, false); break; case TYPE_2: v = LayoutInflater.from(viewGroup.getContext()) .inflate(R.layout.layout2, viewGroup, false); break; } return new ViewHolder(v); }