В getview вызывается метод для возврата представления, представляющего каждую строку. Он вызывается несколько раз, даже когда вы прокручиваете список. Аргументы, которые вы получаете
позиция -> номер строки.
convertview -> представление, представляющее строку. В начале его ноль. Но однажды оказывается
это не будет нулевым.
parent -> родительское представление
В методе getview вы ДОЛЖНЫ вернуть представление для представления строки.
Вот как выглядит обычный метод getView
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = mInflater.inflate(R.layout.analytics_row, null);
TextView mNae = (TextView)convertView.findViewById(R.id.analytic_name);
if(data.get(position).mystring == ""){
mNae.setText("YES");
} else {
mNae.setText("No");
}
return convertView;
}
Здесь мы просто получаем представление, используя инфлятор, и находим текстовое представление внутри представления.
Мы проверяем условие и устанавливаем соответствующий текст и возвращаем представление.
Существуют намного лучшие уроки. Вы должны искать пользовательский базовый адаптер.
Если он работает для вас, то нет проблем с его использованием. Пока вы вернете действительный вид, список будет работать. Inflater просто используется для создания представления из XML-файла.
Но обратите внимание на ответ Пареша. Как видите, он использует статический класс для хранения ссылок на строки внутренних потомков. Когда список отображается впервые, метод getview вызывается только n раз, где n - количество видимых строк в данный момент (не точное). Предположим, что 5 строк видны одновременно, адаптер повторно использует существующее представление и просто обновляет значения в них.
Таким образом, в своем коде он проверяет, что конвертируемое значение равно нулю, если он раздувает новую строку, в противном случае он использует существующую строку с обновленными значениями. Я рекомендую вам посмотреть это видео с Google IO