Intereting Posts
Как получить последнюю запись от Sqlite? Просмотр всего содержимого ScrollView в графическом макете Eclipse Как изменить размер моего изображения в моем прокрутке, как это делается на этом изображении? Как вы получаете MCC и MNC телефона в Android? Синхронизация модели частичной базы данных с сервера на клиент Как вызвать эффект пульсации на Android Lollipop в определенном месте в представлении, не вызывая прикосновения событий? Разве графический интерфейс для Android SDK Manager отсутствует? Подэкран Preference не открывается при использовании support.v7.preference Как я могу запускать независимые тесты Robotium UI параллельно? Распознавание лиц в Android? Android: функция MediaPlayer setVolume Промо-коды для покупок в приложении нарушают проверку удаленного сервера? Являются ли примитивные типы мусором, собранными в Android? Запретить перенос TextView в родительский Как увеличить память для Android Emulator? (INSTALL_FAILED_INSUFFICIENT_STORAGE)

Получение позиции в 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); }