2010-12-07 2 views
37

Может ли кто-нибудь сказать мне, что параметр convertView используется в методе getView() класса Adapter?Что такое параметр convertView в методе ArrayAdapter getView()

Вот пример кода берут из here:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 
    if (v == null) { 
     LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = vi.inflate(R.layout.row, null); 
    } 
    Order o = items.get(position); 
    if (o != null) { 
     TextView tt = (TextView) v.findViewById(R.id.toptext); 
     TextView bt = (TextView) v.findViewById(R.id.bottomtext); 
     if (tt != null) { 
      tt.setText("Name: "+o.getOrderName());       } 
     if(bt != null){ 
      bt.setText("Status: "+ o.getOrderStatus()); 
     } 
    } 
    return v; 
} 

Что мы должны пройти через convertView?

То, что я нашел, take from here:

Получить вид, который отображает данные в указанной позиции в наборе данных. Вы можете создать представление вручную или раздуть его из файла макета . Когда представление завышено, родительский вид (GridView, ListView ...) будет применять параметры макета по умолчанию, если вы не используете inflate (int, android.view.ViewGroup, boolean), чтобы указать корневой вид и предотвратить вложение в корень.

Параметров

положения - положение элемента в пределах данных адаптера набора элементов, для которого вида мы хотим.

convertView - Старый вид повторного использования, если это возможно. Примечание. Вы должны проверить, что это представление не является нулевым и соответствующего типа до использования . Если невозможно преобразовать это представление для отображения правильных данных , этот метод может создать новое представление.

родитель - Родитель, что эта точка зрения в конечном итоге будет присоединено к Возвращению

возвращается - вид, соответствующий данным в указанной позиции.

ответ

38

Вы не должны называть этот метод самостоятельно.

Андроид ListView использует Adapter, чтобы заполнить себя Views. Когда отображается ListView, он начинает звонить getView(), чтобы заполнить себя. Когда пользователь прокручивает новый вид, он должен быть создан, поэтому для производительности ListView отправляет Adapter старое представление, которое оно больше не используется в параметре convertView.

+1

Я не совсем понял это «Когда пользователь прокручивает новый вид, должен быть создан, поэтому для представления ListView отправляет Adapter старое представление, которое больше не используется в параметре convertView». Вы говорите, что ListView не заполняет все взгляды сразу? – Tarik 2010-12-07 22:20:41

Смежные вопросы