Здравствуйте!
Делаю вывод ListView, всё хорошо до момента пока ListView не становится длинным и появляется скролл.
На экран помещается 13 строк, я пролистываю его дальше и элементы начинают повторяться:
Вот после 13 должно идти дальше до 30.
В Адаптере это выглядит так:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v;
String str = items.get(position);
if (convertView == null) {
v = LayoutInflater.from(contextAdapter).inflate(R.layout.test_item, parent, false);
TextView tvText = (TextView) v.findViewById(R.id.test_item_text);
TextView tvText2 = (TextView) v.findViewById(R.id.test_item_text_2);
if (tvText != null) tvText.setText("str:" + str);
if (tvText2 != null) tvText2.setText("position:" + position);
} else {
v = convertView;
}
return v;
}
Если я вынесу из if кусок с поиском элементов в лэйауте, то всё будет почти хорошо:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v;
String str = items.get(position);
if (convertView == null) {
v = LayoutInflater.from(contextAdapter).inflate(R.layout.test_item, parent, false);
} else {
v = convertView;
}
TextView tvText = (TextView) v.findViewById(R.id.test_item_text);
TextView tvText2 = (TextView) v.findViewById(R.id.test_item_text_2);
if (tvText != null) tvText.setText("str:" + str);
if (tvText2 != null) tvText2.setText("position:" + position);
return v;
}
Но проблема в том, что каждый раз, когда я листаю список, он перестраивает ВСЕ видимые на данном экране элементы. Как сделать так, что бы он 1 раз сделал рендер итема, а потом брал из "сохраненных"?
Ответ
почитайте про паттерн ViewHolder здесь (п 6.3. Holder Pattern)
Комментариев нет:
Отправить комментарий