Как выбрать лучший конструктор для вашего адаптера? - PullRequest
0 голосов
/ 18 октября 2018

Изучал адаптеры Array и фон онлайн, различные способы создания конструкций в классе Adapter, расширяющем ArrayAdapter.Я запутался, но мои исследования привели меня к

https://developer.android.com/reference/android/widget/ArrayAdapter.html#ArrayAdapter(android.content.Context,%20int)

После прочтения это не прояснило мою неопределенность.Поэтому мой вопрос заключается в том, как выбрать лучшие конструкции из списка, представленного по ссылке выше, если у меня есть:

  1. Два TextViews и ImageView
  2. Два ImageViews и одинTextView для использования в макете

1 Ответ

0 голосов
/ 18 октября 2018

Предлагаю вам посмотреть BaseAdapter.Это понятно и легко реализовать.Когда вы начнете использовать его в нескольких примерах, вам понравится.Я приведу пример адаптера, который реализует базовый адаптер.Он также включает в себя шаблон держателя представления для производительности.

public class CustomListViewAdapter extends BaseAdapter {

    private Context context;
    private List<Object> objectList;

    public CustomListViewAdapter(Context context, List<Object> objectList) {
        this.context = context;
        this.objectList = objectList;
    }

    @Override
    public int getCount() {
        return objectList.size();
    }

    @Override
    public Object getItem(int position) {
        return objectList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        Object object = getItem(position);
        if (convertView == null) {
            convertView = LayoutInflater.from(context).inflate(R.layout.custom_list_row, null);

            holder = new ViewHolder();
            holder.textProperty = convertView.findViewById(R.id.text_property);
            holder.imageProperty = convertView.findViewById(R.id.image_property);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.textProperty.setText(object.getDisplayName());
        holder.imageProperty.setBackgroundResource(object.checkForSomething() ? R.mipmap.first_image:R.mipmap.second_image);
        return convertView;
    }

    static class ViewHolder{
        private TextView textProperty;
        private ImageView imageProperty;

    }
} 
...