在Android中创建动态按钮

时间:2019-04-18 08:55:51

标签: java android watson-assistant

我正在使用Watson Conversation聊天机器人。我一直在尝试在我的chatbot应用程序中实现“选项”响应类型。我的问题是“在Android中创建n个动态按钮,其中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 :(得分:0)

尝试此解决问题

首先在xml中创建LinearLayout布局

                 <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);}

希望这会对您有所帮助。