Создание динамических кнопок в Android - PullRequest
0 голосов
/ 18 апреля 2019

Я работаю над чат-ботом Watson Conversation.Я пытался реализовать тип ответа «параметры» в своем приложении чата.Моя проблема заключается в том, что «Создание n динамического количества кнопок в Android, где n - это количество имен меток опций, присутствующих в серверной части (IBM Watson Conversation)»

Мне удалось получить имена меток вформа текста.Теперь я должен поместить названия этих ярлыков в «нажимаемые кнопки».Таким образом, когда пользователь нажимает кнопку, значение передается бэкэнду (Watson Conversation API).

Вот так я получаю опцию (тип ответа) из бэкэнда.Watson Conversation отправляет ответ в виде JSON.

Код получения имени метки:

 str = response.getOutput().getGeneric().get(i).getResponseType();
JSONArray arrayOptions = new JSONArray(response.getOutput().getGeneric().get(i).getOptions());
            int j=0; //j is used to count the number of options
            while (j<arrayOptions.length()){
              final Message outMessage2 = new Message();
              outMessage2.setMessage(response.getOutput().getGeneric().get(i).getOptions().get(j).getLabel());
              outMessage2.setId("2");
              System.out.println(outMessage2);
              messageArrayList.add(outMessage2);
              j++;
            }

1 Ответ

0 голосов
/ 18 апреля 2019

Попробуйте решить эту проблему

Сначала создайте макет LinearLayout внутри xml

                 <LinearLayout
                    android:id="@+id/layout_dynamic"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:layout_marginLeft="5dp"
                    android:layout_marginRight="5dp"
                    android:orientation="vertical">

                </LinearLayout>

После этого используйте код ниже

LinearLayout layout_dynamic =(LinearLayout) findViewById(R.id.layout_dynamic);

for (int i = 0; i < YOURARRAY.length(); i++) {
String label = <Button Name as You Like>;
 LinearLayout childLayout = new LinearLayout(getActivity());
 LinearLayout.LayoutParams linearParams = new LinearLayout.LayoutParams(
 LinearLayout.LayoutParams.MATCH_PARENT LinearLayout.LayoutParams.WRAP_CONTENT);
 childLayout.setLayoutParams(linearParams);
 Button btnName = new Button(getActivity());
 btnName.setLayoutParams(newTableLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT, 1f));

 childLayout.addView(btnName, 0);
 layout_dynamic.addView(childLayout);}

Надеюсь, это поможет вам.

...