Заполните представления массивом

Я новичок в Android. Я нашел этот код в своей книге, из которой учусь. Это не объяснено должным образом Я создал Java-класс Drink а затем я использовал drinks[] в своей деятельности. При щелчке он передает идентификатор выбранного массива другому действию с использованием намерения. Теперь в этом другом действии я хочу отобразить название напитка, изображение и описание, которое мы сохранили в массиве. Я понял, что мы сохранили идентификатор массива в объекте класса Drinks но почему мы использовали методы получения, чтобы получить имя, описание и изображение. Они не связаны с массивом? В них нет кода? Тогда что происходит на самом деле

может кто-нибудь объяснить?

Код класса Drinks.java

Class Drinks
{
 private String name ;
    private  String  description ;
    private  int rid ;

    public static final Drinks[] drinks = {
            new Drinks("Latte", "A couple of espresso shots with steamed milk",
                    R.drawable.latte),
            new Drinks("Cappuccino", "Espresso, hot milk, and a steamed milk foam",
                    R.drawable.cappuccino),
            new Drinks("Filter", "Highest quality beans roasted and brewed fresh",
                    R.drawable.filter)
    };


          public Drinks(String name, String description, int rid) {
                this.name = name;
                this.description = description;
                this.rid = rid;
            }
            public String getName() {
                return name;
            }

            public String getDescription() {
                return description;
            }

            public int getRid() {
                return rid;
            }
        }


-----------------------------------------

Код активности, в котором я использую напитки [] и передаю его идентификатор

    listDrinks = findViewById(R.id.listDrinks);



    ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1 ,Drinks.drinks);
    listDrinks.setAdapter(adapter);
    listDrinks.setOnItemClickListener(new AdapterView.OnItemClickListener()
    {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            Intent intent = new Intent(Main2Activity.this , Main3Activity.class);
            intent.putExtra("id",id);

            startActivity(intent);

        }
    });

Другое действие, в котором я передаю идентификатор массива и использую методы получения, чтобы установить описание имени и изображение для отображения.

  textView = findViewById(R.id.textname);
    text_description = findViewById(R.id.text_description);
    imageView = findViewById(R.id.photo);


    Intent intent= getIntent();
 int drinkId = Integer.parseInt(intent.getStringExtra("id"));
    Drinks d = Drinks.drinks[drinkId];


    textView.setText(d.getName());

    text_description.setText(d.getDescription());


    imageView.setImageResource(d.getRid())

;
0
0
45
1

Ответы 1

Вы создаете новые объекты внутри Drinks [] drinks, которые будут вызывать конструктор этого класса и устанавливать имя, описание и rid, которые являются частными. Итак, вам нужны функции получения, чтобы получить доступ к этим конкретным объектам, названию и описанию. Вы анализируете только идентификатор объекта, к которому нужно получить доступ во втором действии.

Другие вопросы по теме