Не могли бы вы помочь мне понять адаптер с пользовательскими данными:
Я читал учебное пособие, в котором объяснялось, что для заполнения спискаView такой модель, как MyBook
(с двумя переменными: автор и заголовок, например), мы должны создать подкласс BaseAdapter и переопределить эти методы:
Вот код:
public LivreAdapter(Context context,List<Livre> biblio) {
inflater = LayoutInflater.from(context);
this.biblio = biblio;
}
@Override
public int getCount() {
return biblio.size();
}
@Override
public Object getItem(int position) {
return biblio.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
private class ViewHolder {
TextView tvTitre;
TextView tvAuteur;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null) {
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.itemlivre, null);
holder.tvTitre = (TextView)convertView.findViewById(R.id.tvTitre);
holder.tvAuteur = (TextView)convertView.findViewById(R.id.tvAuteur);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.tvTitre.setText(biblio.get(position).getTitre());
holder.tvAuteur.setText(biblio.get(position).getAuteur());
return convertView;
}
}
Создаем ли подкласс BaseAdapter только для отображения пользовательских данных так, как мы хотим (с субтитрами и т.д.)? Поскольку это действительно просто заполнить listView массивом String, здесь нам нужно подклассифицировать BaseAdapter...
Я не могу найти эти методы в документе, поэтому getItem будет вызван до getView? в конце метода мы устанавливаем "держатель" для хранения текста из базы данных, но я не вижу, где мы повторно используем этот "держатель", поскольку единственная возвращаемая переменная - "convertView"?
Я ищу информацию в документе, но не могу найти что-то, что поможет мне точно понять процесс класса.
Существуют и другие классы, которые также могут быть подклассифицированы. Простой списокView полезен, но он не может использоваться для отображения пользовательских данных. Чтобы иметь возможность заполнять listView с помощью настраиваемых данных, вам необходимо использовать адаптер, который раздувает каждую строку listView. getItem может использоваться изнутри getView inorder для получения определенной записи из списка. При создании адаптера. Просмотр этих представлений перерабатывается, поэтому могут использоваться ViewHolders
for
циклfor
, он считает «размер» и вызывает getView для итерации элементов? Просто чтобы быть уверенным;) Еще раз спасибо за ваш быстрый ответ