Понимание параметра convertView метода GetView

Здравствуйте, разработчики Android, я прочитал документацию по методу getView BaseAdapter, и я понял, что представление может быть повторно использовано / переработано, поэтому перед использованием убедитесь, что это представление не нулевое и имеет соответствующий тип. В моем случае каждый раз, когда convertview имеет значение null, и создается новое представление. Хотя список заполнен правильно, но я хотел бы знать, когда представление будет переработано и когда оно создаст новое представление.

2 ответа

Решение

В основном это переработано, когда вы прокручиваете свой список. Когда предмет спрятан - он может быть переработан и использован как новый видимый предмет. Попробуйте добавить ~100 элементов, прокрутите их и проверьте, сколько просмотров действительно создано.

so should check that this view is non-null and of an appropriate type before using

Итак, я считаю, что вы используете несколько макетов в ListView.

In my case every time convertview is null and new view is created

Это может быть потому, что вы не использовали:

@Override
public int getItemViewType(int position) {

    return dataArray[position].getType();
}
@Override
public int getViewTypeCount() {

    return TYPE_MAX_COUNT;
}

Though list is populated correctly,but I would like to know when view will be recycled and when it will create new view

Он не будет перезагружаться автоматически, вы должны проверить наличие ConvertView(не нулевого) и использовать его, вместо того, чтобы надувать новый View.

Сюда:

public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder holder;
    int type = getItemViewType(position);
    if (convertView == null) {

        holder = new ViewHolder();
        switch (type) {
        case TYPE1:
        //inflate type1
        break;
        case TYPE2:
        //inflate type2
        break;
        }
    convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }
}

И ConvertView доступен (не нуль) для повторного использования, когда представление этого конкретного типа надувается хотя бы один раз и больше не отображается, потому что вы прокручивали список.

Другие вопросы по тегам