Так что я пытаюсь установить другой ресурс макета для моего первого элемента ListItem, используя этот код:Настройка макета первого ListView Пункт
int type;
@Override
public int getItemViewType(int position) {
if(position==0) {
type = R.layout.queue_item_next;
} else {
type = R.layout.queue_item;
}
return type;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = (View) inflater.inflate(getItemViewType(position), parent, false);
}
Этот код работает, однако с неожиданным поведением. По какой-то причине последний элемент ListView также настроен на использование этого альтернативного макета, и я понятия не имею, почему.
Что может быть причиной этого?
Спасибо.
Может быть, потому что '' convertView повторно используемый. Удалите условие 'if' и проверьте, работает ли оно? – Sanjeet
Я не уверен на сто процентов, но я думаю, что это связано с переработкой вида. Вы в настоящее время проверяете, является ли convertView равным null, но я думаю, вы также должны проверить текущий тип convertView. Вы можете сохранить это в теге convertView для выполнения этой проверки – 0xDEADC0DE
, но не добавляя проверку для convertView, увеличит объем памяти, когда число элементов, которое будет отображаться, велико, нарушая концепцию просмотра вторсырья. – Swapnil