Как присвоить значение кнопке и установить onClickListener - PullRequest
0 голосов
/ 05 декабря 2018

enter image description here
Я хотел бы создать всплывающее диалоговое окно, которое будет похоже на рисунок выше.Все кнопки будут иметь текст из списка текстов, и при нажатии любой конкретной кнопки соответствующее изображение должно загружаться в разделе «Изображение» ниже.

Например: у меня есть данные JSON, как показано ниже. Как только пользователь нажимает кнопку Apple, в разделе изображений ниже должна быть загружена ссылка https://test.com/images/apple.jpg. Любая идея или учебное пособие для достижения этой цели?

"Fruit": [
{
  "Title": "Apple",
  "ImageURL": "https://test.com/images/apple.jpg"
},
{
  "Title": "Orange",
  "ImageURL": "https://test.com/images/orange.jpg"
},
{
  "Title": "Banana",
  "ImageURL": "https://test.com/images/banana.jpg"
},
{
  "Title": "Watermelon",
  "ImageURL": "https://test.com/images/watermelon.jpg"
},
{
  "Title": "Strawberry",
  "ImageURL": "https://test.com/images/strawberry.jpg"
}

1 Ответ

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

добавить кнопку в линейный макет, используя цикл for Вот так.

LinearLayout layout=(LinearLayout )findViewById(R.id.layout);
        for(int i=0;i<fruitList.size();i++)
        {
            final Button button = new Button(this);
            button.setText(fruitList.get(i).getName());
            button.setId(i);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int position=button.getId();
                    imageView.setImageURI(fruitList.get(position).getImage());
                }
            });
            layout.addView(button);

        }

здесь библиотека github, в отличие от линейного макета, вы можете использовать FlexboxLayout этой библиотеки, чтобы добавить несколько строк с кнопкой.https://github.com/google/flexbox-layout

...