Заполните представления с массивом - PullRequest
0 голосов
/ 19 октября 2018

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

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

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 голосов
/ 02 ноября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...