1
私はAndroidでVolleyのリクエストに問題があります。私はサーバーから学生のバットを取得しようとしていて、各バットノーの詳細に対応した学生の詳細を取得しようとしています。ログにはサーバーからの応答が表示されますが、それらはすべてランダムな順序です。また、レスポンスは、recyclerviewでランダムな順序で設定されています。ここ は、バッチや学生のための私のボレーとJSONです:Volley multiple requests android
private void setData() {
students = new ArrayList<>();
StringRequest batchRequest=new StringRequest(Request.Method.POST, BATCH_URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
parseBatchJsonResponse(response);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("ResponseError",""+error.toString());
}
});
VolleySingleton.getInstance(getApplicationContext()).addToRequestQueue(studentRequest,"req");
}
private void parseBatchJsonResponse(String response) throws JSONException {
Log.d("Resp",""+response);
JSONObject batchObject=new JSONObject(response);
JSONArray batchArray=batchObject.getJSONArray("result");
for (int i=0;i<batchArray.length();i++){
JSONObject bObject=batchArray.getJSONObject(i);
batchNos=bObject.getString("batch");
Log.d("batchNo",""+batchNos);
getStudentData(batchNos);
}
}
private void getStudentData(String batchNo) {
batchNos =batchNo= "\"" + batchNo + "\"";
String studentURl=STUDENT_URL+batchNo.trim();
Log.d("SURL",""+studentURl);
StringRequest studentRequest =new StringRequest(Request.Method.GET,studentURl, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
Log.d("Student",""+response+batchNos);
parseStudentJson(response);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
VolleySingleton.getInstance(getApplicationContext()).addToRequestQueue(studentRequest,"req");
}
private void parseStudentJson(String batchNo) throws JSONException {
// students.clear();
JSONObject studentOb=new JSONObject(batchNo);
JSONArray stuArray=studentOb.getJSONArray("result");
for (int i=0;i<stuArray.length();i++){
JSONObject stu=stuArray.getJSONObject(i);
String stuName=stu.getString("student");
students.add(new Student(stuName,100));
Log.d("BNO",""+batchNos);
}
batches.add(new Batch(batchNos,students));
adapter.notifyDataSetChanged();
なぜそれが問題になることでしょうか? – schlingel
バッチの番号が正しい順序で存在するため、何回も実行する必要がある単一の要求キューがあります。 –
複数のキューを作成すると、非同期で実行されます。実行の要求はありません。 – ak0692