Использование ArrayAdapter для создания списка в Android - PullRequest
0 голосов
/ 08 декабря 2018

Я новичок в этом, и объяснение того, как все работает, было бы очень полезно.

Итак, у меня есть этот класс

        static class ListAdapter extends ArrayAdapter<String>{
            List<String> elements;
            Context context;

            public ListAdapter(Context context, List<String> elements) {
                super(context, 0, elements);
                this.context = context;
                this.elements = elements;
            }


            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                if (convertView == null) {
                    convertView = LayoutInflater.from(context).inflate(R.layout.list_item_ex, null, false);
                }

                TextView tvTitle = convertView.findViewById(R.id.tv_title);
                TextView tvDescription = convertView.findViewById(R.id.tv_description);
                ImageView ivExample = convertView.findViewById(R.id.iv_image);

                ivExample.setImageResource(R.drawable.offer_1);
                tvTitle.setText(elements.get(position));
                tvDescription.setText(String.valueOf(position));

                return convertView;
            }
        }

Я добавил в MainActivity несколько элементов ксписок, чтобы увидеть, как это работает, но мне трудно понять, как вы можете добавлять элементы, каждый с разным рисунком, описанием и т. д.

1 Ответ

0 голосов
/ 08 декабря 2018

Для этого вам необходимо создать ArrayAdapter с пользовательским классом: Вот шаги, которые вы должны выполнить:

  1. создать класс Custom

    public class Custom {
    int image;
    String title;
    String description;
    //constructeur 
    //getters and setters }
    
  2. создание расширений адаптера ArrayAdapter

    public class CustomArrayAdapter extends ArrayAdapter<Custom> {
    
    ArrayList<Custom> list;
    
        public CustomArrayAdapter(Context context, ArrayList<Custom> list) {
        super(context, R.layout.list_item_ex, list);this.list = list;
    }
    
    
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    
        Custom custom=getItem(position);
    
        if (convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item_ex, parent, false);
        }
    
        TextView tvTitle = convertView.findViewById(R.id.tv_title);
        TextView tvDescription = convertView.findViewById(R.id.tv_description);
        ImageView ivExample = convertView.findViewById(R.id.iv_image);
    
        ivExample.setImageResource(custom.getImage());
        tvTitle.setText(custom.getTitle());
        tvDescription.setText(custom.getDescription());
    
        return convertView;
    }
    

    }

  3. заполнить ArrayList и затем listView.setAdapter (customArrayAdapter);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        ListView listView=(ListView) findViewById(R.id.listView) ;
        ArrayList<Custom> list=new ArrayList<>();
        list.add(new Custom(R.mipmap.ic_launcher,"title","desc"));
    
        CustomArrayAdapter customArrayAdapter=new CustomArrayAdapter(this,listView);
    
        listView.setAdapter(customArrayAdapter);}
    
...