Arraylist未正确解析

时间:2016-03-25 19:52:06

标签: android mysql arraylist

您好我遇到了一个奇怪的问题。我正在尝试用mysql数据库中的问题和答案制作一个测验应用程序。我会解析值here

我如何创建List

@Override
    protected List<QuestionsList> doInBackground(String... params) {
        nameValuePairs = new ArrayList<>();
        try {
            url = new URL(params[0]);
            httpURLConnection = (HttpURLConnection) url.openConnection();
            httpURLConnection.setReadTimeout(10000);
            httpURLConnection.setConnectTimeout(15000);
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setDoInput(true);
            httpURLConnection.setDoOutput(true);
            setupDataToDB();
            outputStream = httpURLConnection.getOutputStream();
            bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
            bufferedWriter.write(StringGenerator.queryResults(nameValuePairs));
            bufferedWriter.flush();
            bufferedWriter.close();
            outputStream.close();
            httpURLConnection.connect();
            inputStream = new BufferedInputStream(httpURLConnection.getInputStream());
            jsonResult = StringGenerator.inputStreamToString(inputStream, QuestionsActivity.this);
            jsonResponse = new JSONObject(jsonResult.toString());
            Log.e("Response: ", jsonResult.toString());
            checkDisplayLanguage(langText);
            questionsLists = new ArrayList<>();
            for (int i = 0; i < jsonMainNode.length(); i++) {
                jsonChildNode = jsonMainNode.getJSONObject(i);
                questionName = jsonChildNode.optString(Constants.QUESTION_NAME_JSON_NAME);
                Log.e("Question Name: ", questionName);
                jsonArray = new JSONArray(jsonChildNode.optString(Constants.QUESTIONS_ANSWERS_ARRAY));
                for (int j = 0; j < jsonArray.length(); j++) {
                    jsonSecondChildNode = jsonArray.getJSONObject(j);
                    answer1 = jsonSecondChildNode.optString("answer1");
                    answer2 = jsonSecondChildNode.optString("answer2");
                    answer3 = jsonSecondChildNode.optString("answer3");
                    iscorrect1 = jsonSecondChildNode.optString("iscorrect1");
                    iscorrect2 = jsonSecondChildNode.optString("iscorrect2");
                    iscorrect3 = jsonSecondChildNode.optString("iscorrect3");
                    question_answers = new ArrayList<>();
                    question_answers.add(answer1);
                    question_answers.add(answer2);
                    question_answers.add(answer3);
                    question_iscorrect = new ArrayList<>();
                    question_iscorrect.add(iscorrect1);
                    question_iscorrect.add(iscorrect2);
                    question_iscorrect.add(iscorrect3);
                    Log.e("Answers in for loop", question_answers.toString());
                    questionsLists.add(new QuestionsList(questionName, answersArray, question_iscorrect));
                }

            }
        } catch (IOException | JSONException e) {
            e.printStackTrace();
        }
        return questionsLists;
    }

并且post执行如下:

@Override
        protected void onPostExecute(List<QuestionsList> lists) {
            super.onPostExecute(lists);
            pDialog.dismiss();
            position = 0;
            question.setText(lists.get(position).getName());
            answersArray = lists.get(position).getAnswers();
            ans1 = answersArray.get(position);
            ranswer1.setText(ans1);
        }

调试信息如下所示:

E/Question Name:: Where to look to find journal articles
E/Answers in for loop: [In the librarys catalog , , ]
E/Answers in for loop: [, In alphabetical list of healink , ]
E/Answers in for loop: [, , Databases available in the library's site]
E/Question Name:: What information we provide magazine
E/Answers in for loop: [Published research experiments current information, , ]
E/Answers in for loop: [, Lists information about people, addresses, organizations, ]
E/Answers in for loop: [, , Legislation, competitions]
E/Question Name:: What is the E/Answers in for loop: [Is the number used for the registration of periodical publications, , ]
E/Answers in for loop: [, Is the International Unique number used for registration of printed books, ]
E/Answers in for loop: [, , Is the International Unique number used for the recording of Publications mixed forms]

我在这里做错了什么,arraylist没有正确解析?

2 个答案:

答案 0 :(得分:3)

这是一种错字或其他错误,需要调试并缓慢转换,而不是StackOverflow。

我个人认为,由于初始化活动存在错误,您的观点(保留在answer1,answer2和answer3中的观点)都是同一个观点。但坦率地说,这个问题应该被关闭,因为它没有显示具体问题。

另外,添加:

question_answers = new HashMap<String,String>();

行之前:

question_answers.put(Constants.FIRST_ANSWER_POST_NAME, answer1);

答案 1 :(得分:1)

您的代码存在一个问题。 你必须搬家

questionsLists.add(new QuestionsList(questionName, question_answers));

在你的内心for loop内。 因为您现在所做的是仅在question_answers中添加最后questionsLists。它应该看起来像 -

for (int i = 0; i < jsonMainNode.length(); i++) {
               ....
                for (int j=0;j<jsonArray.length();j++){
                    ....

            questionsLists.add(new QuestionsList(questionName, question_answers));
                }


            } 

希望这有帮助!