首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >填充arraylist的arraylist

填充arraylist的arraylist
EN

Stack Overflow用户
提问于 2018-03-07 17:01:35
回答 1查看 59关注 0票数 0

我有一个数组列表,我正在尝试填充它,但它的非working.The响应是从server.the获取的响应如下

代码语言:javascript
复制
[{"QKey":"1234","OptionLabel":"Ground Floor","optionValue":"0"},{"QKey":"5678","OptionLabel":"1st Floor","optionValue":"1"}

我正在尝试获取它,将它添加到arraylist中并填充,但它似乎不起作用

这是我的代码

代码语言:javascript
复制
String dropDownResponse=readFromFile(2);
                                             Log.d("Reading from file",dropDownResponse);
                                             JSONArray jsonArray = new JSONArray(dropDownResponse);

                                             formModel.setName(rowLabel);
                                             formModel.setIsMandatory(isMandatory);
                                             formModel.setInputType(inputType);
                                            /* formModel.setName("SAMPLE LABEL");
                                             formModel.setIsMandatory("Y");
                                             formModel.setInputType("selectbox");*/
                                             spinnerList.add(formModel);
                                             spinnerPopulationList.get(spinnerList.size()-1).set(0,rowLabel);
                                             for(int j=0;j<jsonArray.length();j++)
                                             {
                                                 JSONObject jsonObject = jsonArray.getJSONObject(j);
                                                 spinnerRowId=jsonObject.getString("QKey");
                                                 Log.d("QKey",spinnerRowId);
                                                 optionLabel=jsonObject.getString("OptionLabel");
                                                 Log.d("Option Label",optionLabel);
                                                 if(rowId.equals(spinnerRowId))
                                                 {
                                                     spinnerPopulationList.get(spinnerList.size()-1).set(spinnerPopulationList.get(spinnerList.size()-1).size()-1,optionLabel);
                                                 }
                                             }
                                             for(int h=0;h<spinnerPopulationList.get(spinnerList.size()-1).size();h++)
                                             {
                                                 Log.d("spinner item"+rowLabel+"["+h+"]",spinnerPopulationList.get(spinnerList.size()-1).get(h));
                                             }

代码中的这一行显示indexOutOfBoundException

代码语言:javascript
复制
if(rowId.equals(spinnerRowId))
                                                 {
                                                     spinnerPopulationList.get(spinnerList.size()-1).set(spinnerPopulationList.get(spinnerList.size()-1).size()-1,optionLabel);
                                                 }
EN

回答 1

Stack Overflow用户

发布于 2018-03-07 17:16:52

我不认为你需要一个二维的AllayList来适应这个json。这只是一个对象数组。您可以使用Gson很容易地对其进行解析。

您将需要几个响应类,如

代码语言:javascript
复制
class ResponseObj {
    private String Qkey;
    private String OptionLabel;
    private String optionValue;

    //Constructor(s), getters and setters
}

class Response {
    private ArrayList<ResponseObj> objects = new ArrayList<>();

    //Constructor(s), getters and setters
}

然后,您可以使用Gson解析json并将其作为对象。当您从服务器获得响应时,您可以使用类似这样的内容。

代码语言:javascript
复制
Response response = gson.fromJson(YOUR_JSON, Response.class);

for(ResponseObj object : response.getObjects()) {

    //In this loop, you are iterating over each object in your json
    //which looks like
    //{"QKey":"1234","OptionLabel":"Ground Floor","optionValue":"0"}

    doSomething(object);
    doSomethingWithKey(object.getQKey());
}

你可以通过Here在你的项目中使用Gson。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49147799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档