Android 将jsonObject转换为字符串jsonarray并在对话框中显示时出现问题

Android 将jsonObject转换为字符串jsonarray并在对话框中显示时出现问题,android,arrays,dialog,Android,Arrays,Dialog,我需要在对话框中显示数组3项的帮助 数组中的项:InverNode、名称和InverNode 我在将jsonobject转换为jsonarray时遇到问题 JsonObject: {"data":[{"invernaderoId":"1","name":"inver B","Invernarder":"inv1"},{"invernaderoId":"2","name":"inver C","Invernarder":"inv2"},{"invernaderoId":"3","name":"in

我需要在对话框中显示数组3项的帮助

数组中的项:InverNode、名称和InverNode

我在将jsonobject转换为jsonarray时遇到问题

JsonObject:

{"data":[{"invernaderoId":"1","name":"inver B","Invernarder":"inv1"},{"invernaderoId":"2","name":"inver C","Invernarder":"inv2"},{"invernaderoId":"3","name":"inv13","Invernarder":"inv3"},{"invernaderoId":"4","name":"inv14 A","Invernarder":"HTFRA14A"}]}
使用
JsonArray arr=js.getJSONArray(“数据”)转换为JsonArray

结果示例:

[{"invernaderoId":"1","name":"inver B","Invernarder":"inv1"},{"invernaderoId":"2","name":"sd 12 C","Invernarder":"HTESP12C"},{"invernaderoId":"3","name":"s13","Invernarder":"sd"},{"invernaderoId":"4","name":"ds 14 A","Invernarder":"ds"}]
对替换数组字符串进行编码:

  String[] arr2 = arr.toString().replace("},{", " ,").split(" ");

代码对话框:

 new AlertDialog.Builder(getContext())
                            .setTitle("Selected one")
                            .setSingleChoiceItems(employes, itemSelected, new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialogInterface, int selectedIndex) {
                                    String nombreselect = employes[selectedIndex];
                                    employes.setText(nombreselect);
                                }
                            })
                            .setPositiveButton("Ok", null)
                            .setNegativeButton("Cancel", null)
                            .show();
                }
            });
在对话框中选择查看器:


由于您有一个数组,最简单的方法是正确地传递json数组,创建一个适配器(例如,
ArrayAdapter
)并在生成器上调用
setAdapter
。在adapter子类中,您可以控制单个条目在对话框上的呈现方式。您可以迭代JSONArray元素并将它们添加到字符串数组中,然后使用此字符串数组为AlertDialog提供数据

final String jsonResponse = "{   \"data\":[      {\n" +
        "         \"invernaderoId\":\"1\",\n" +
        "         \"name\":\"inver B\",\n" +
        "         \"Invernarder\":\"inv1\"\n" +
        "      \n" +
        "},\n" +
        "      {\n" +
        "         \"invernaderoId\":\"2\",\n" +
        "         \"name\":\"inver C\",\n" +
        "         \"Invernarder\":\"inv2\"\n" +
        "      \n" +
        "},\n" +
        "      {\n" +
        "         \"invernaderoId\":\"3\",\n" +
        "         \"name\":\"inv13\",\n" +
        "         \"Invernarder\":\"inv3\"\n" +
        "      \n" +
        "},\n" +
        "      {\n" +
        "         \"invernaderoId\":\"4\",\n" +
        "         \"name\":\"inv14 A\",\n" +
        "         \"Invernarder\":\"HTFRA14A\"\n" +
        "      \n" +
        "}\n" +
        "   \n" +
        "]\n" +
        "}";

try {
    JSONObject js = new JSONObject(jsonResponse);
    JSONArray arr = js.getJSONArray("data");
    String[] list = new String[arr.length()];
    for (int i = 0; i <= arr.length() - 1; i++) {
        JSONObject element = arr.getJSONObject(i);
        String InvernaderoId = "\"invernaderoId\":\"" + element.getString("invernaderoId") + "\", ";
        String Name = "\"name\":\"" + element.getString("name") + "\", ";
        String Invernarder = "\"Invernarder\":\"" + element.getString("Invernarder") + "\"";

        list[i] = InvernaderoId + Name + Invernarder;
    }

    AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
    builder.setTitle("Title")
            .setSingleChoiceItems(list, -1, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int position) {

                    Toast.makeText(getContext(), "Position: " + position, Toast.LENGTH_SHORT).show();

                }
            }).setPositiveButton("Ok", null)
            .setNegativeButton("Cancel", null)
            .show();

} catch (JSONException e) {
    e.printStackTrace();
}
final String jsonResponse=“{\”data\”:[{\n”+
“invernaderoId\:\“1\,\n”+
“\”名称\“:\”发票B\“,\n”+
“\“InverOrder\”:\“inv1\”\n”+
“\n”+
},\n+
“{\n”+
“invernaderoId\:\“2\,\n”+
“\'name\:\'inver C\”,\n”+
“\“InverOrder\”:\“inv2\”\n”+
“\n”+
},\n+
“{\n”+
“invernaderoId\:\“3\,\n”+
“名称”:“inv13\,\n”+
“\“InverOrder\”:\“inv3\”\n”+
“\n”+
},\n+
“{\n”+
“invernaderoId\:\“4\,\n”+
“名称”:“inv14 A\,\n”+
“\“Invernarder\”:\“HTFRA14A\”\n”+
“\n”+
“}\n”+
“\n”+
“]\n”+
"}";
试一试{
JSONObject js=新的JSONObject(jsonResponse);
JSONArray arr=js.getJSONArray(“数据”);
字符串[]列表=新字符串[arr.length()];

对于(int i=0;i Zain,hi,如何创建一个对话框来捕获数据示例:…hi@MexiCano这里您想创建一个自定义布局,并且可以很容易地添加自定义xml布局..然后您可以使用一个监听器接口,您可以将该接口从活动传递到dialogFragment,您可以使用它的回调来处理从d返回的数据用户输入的iLog Hi Zain,在帖子中帮助我:,请Hi Zain,你能帮我解决这个问题吗--
  String[] arr2 = arr.toString().replace("},{", " ,").split(" ");
final String jsonResponse = "{   \"data\":[      {\n" +
        "         \"invernaderoId\":\"1\",\n" +
        "         \"name\":\"inver B\",\n" +
        "         \"Invernarder\":\"inv1\"\n" +
        "      \n" +
        "},\n" +
        "      {\n" +
        "         \"invernaderoId\":\"2\",\n" +
        "         \"name\":\"inver C\",\n" +
        "         \"Invernarder\":\"inv2\"\n" +
        "      \n" +
        "},\n" +
        "      {\n" +
        "         \"invernaderoId\":\"3\",\n" +
        "         \"name\":\"inv13\",\n" +
        "         \"Invernarder\":\"inv3\"\n" +
        "      \n" +
        "},\n" +
        "      {\n" +
        "         \"invernaderoId\":\"4\",\n" +
        "         \"name\":\"inv14 A\",\n" +
        "         \"Invernarder\":\"HTFRA14A\"\n" +
        "      \n" +
        "}\n" +
        "   \n" +
        "]\n" +
        "}";

try {
    JSONObject js = new JSONObject(jsonResponse);
    JSONArray arr = js.getJSONArray("data");
    String[] list = new String[arr.length()];
    for (int i = 0; i <= arr.length() - 1; i++) {
        JSONObject element = arr.getJSONObject(i);
        String InvernaderoId = "\"invernaderoId\":\"" + element.getString("invernaderoId") + "\", ";
        String Name = "\"name\":\"" + element.getString("name") + "\", ";
        String Invernarder = "\"Invernarder\":\"" + element.getString("Invernarder") + "\"";

        list[i] = InvernaderoId + Name + Invernarder;
    }

    AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
    builder.setTitle("Title")
            .setSingleChoiceItems(list, -1, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int position) {

                    Toast.makeText(getContext(), "Position: " + position, Toast.LENGTH_SHORT).show();

                }
            }).setPositiveButton("Ok", null)
            .setNegativeButton("Cancel", null)
            .show();

} catch (JSONException e) {
    e.printStackTrace();
}