Да, вам придется сделать две вещи, хотя. Во-первых, переопределите метод getItemViewType()
в вашем адаптере, чтобы вы могли быть уверены, что ваш bindView()
получает только те представления, которые соответствуют определенной позиции в списке, например:
public int getItemViewType(int position){
if(correspondsToViewType1(position)){
return VIEW_TYPE_1;
}
else(correspondsToViewType2(position)){
return VIEW_TYPE_2;
}
//and so on and so forth.
}
После того, как вы это сделаете, просто выполните в вашем bindView()
простой тест, который проверяет, какой тип просмотра должен быть получен, и соответственно настраивает параметры следующим образом:
public void bindView(View view, Context context, Cursor cursor){
if(correspondsToViewType1(cursor)){
//Now we know view is of a particular type and we can do the
//setup for it
}
else if(correspondsToViewType2(cursor){
//Now we know view is of a different type and we can do the
//setup for it
}
}
Обратите внимание, что вам понадобятся разные методы для correpondsToViewType, один из которых принимает курсор, а другой - int (для позиции). Реализация этого будет зависеть от того, что вы хотите сделать.
Обратите внимание, что выполнение этих действий позволит вам повторно использовать потенциально переработанные представления. Если вы этого не сделаете, ваше приложение получит огромный удар по производительности. Прокрутка будет супер изменчивой.