0

我正在开发 Watson Conversation 聊天机器人。我一直在尝试在我的聊天机器人应用程序中实现“选项”响应类型。我的问题是“在 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++;
            }
4

1 回答 1

0

试试这个来解决你的问题

首先在xml里面创建一个LinearLayoutLayout

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

希望这会帮助你。

于 2019-04-18T09:13:59.633 回答