Member 14025515 Ответов: 1

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


Я новичок в Android. Я нашел этот код в своей книге, из которой я учусь. Это не объяснено должным образом, я создал класс java Drink, а затем использовал 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())

;


Что я уже пробовал:

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

1 Ответов

Рейтинг:
0

Richard MacCutchan

Вы пытаетесь адресовать массив по значению идентификатора объекта Drinks. Но массивы адресуются простым числовым значением в диапазоне от 0 до N. Вам нужно проиндексировать каждый элемент в массиве и сравнить его идентификатор с переданным значением.