您好我遇到了一个奇怪的问题。我正在尝试用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没有正确解析?
答案 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));
}
}
希望这有帮助!