Когда вы разрабатываете программу для Android; и вы хотите иметь ArrayAdapter, вы можете просто иметь класс (чаще всего с суффиксом ViewHolder) или напрямую накачать ваш convertView и найти ваш вид по id.
Так в чем же преимущество использования ViewHolder?
Пример обоих здесь:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = ((Activity)getContext()).getLayoutInflater().inflate(R.layout.row_phrase, null);
}
((TextView) convertView.findViewById(R.id.txtPhrase)).setText("Phrase 01");
}
Или создайте внутренний класс в ArrayAdapter следующим образом:
static class ViewHolder {
ImageView leftIcon;
TextView upperLabel;
TextView lowerLabel;
}
и, наконец, в getView:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (view == null) {
view = LayoutInflater.from(context).inflate(R.layout.row_layout,
null, false);
holder = new ViewHolder();
holder.leftIcon = (ImageView) view.findViewById(R.id.leftIcon);
}
}