홈>
Volley를 사용하여 원격 PHP 스크립트에서 JSON을 가져옵니다. 때로는 JSON 배열이 비어 있습니다.
이 코드는 :
StringRequest stringRequest=new StringRequest(Request.Method.GET, HI, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject=new JSONObject(response);
JSONArray array=jsonObject.getJSONArray("data");
for (int i=0; i<array.length(); i++ ){
JSONObject ob=array.getJSONObject(i);
Notificacion listData=new Notificacion(ob.getString("id_notificacion")
,ob.getString("texto"),
ob.getString("fecha"),
ob.getString("nombre"),
ob.getString("nombre")+" "+ob.getString("apellidos"),
ob.getString("profesor"),
ob.getString("tutor"),
ob.getString("estado"),
ob.getString("envia_tutor"),
ob.getString("envia_profesor")
);
list_data.add(listData);
spinner.setVisibility(View.GONE);
}
rv.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("arry","array lengt error:"+error);
Toast.makeText(getActivity(),
"No tienes notificaciones.", Toast.LENGTH_LONG)
.show();
spinner.setVisibility(View.GONE);
}
});
RequestQueue requestQueue= Volley.newRequestQueue(getActivity());
requestQueue.add(stringRequest);
JSON 배열이 비어 있으면 data []가 비어 있지만 Toast가 표시되지 않고 스피너 가시성이 예상대로 사라지지 않는다는 응답 리스너 메시지가 표시됩니다.
받는 JSON 배열이 비어있을 때 토스트를 시작하고 스피너 가시성을 GONE으로 설정하려면 코드를 어떻게 변경해야합니까?
- 답변 # 1
- 답변 # 2
public void onResponse(String response)
응답을 성공적으로 요청하고 파싱을 요청했지만이 콜백은 데이터 값이 비어 있지 않다는 것을 의미하지 않습니다!public void onErrorResponse(VolleyError error)
요청이 응답을 얻지 못했거나 http 코드 오류 또는 요청이 성공했지만 구문 분석에 실패했음을 의미합니다.요청이 성공하지만
data array
일 때 무언가를하고 싶을 때 비어 있으면public void onResponse(String response)
에서 모두 논리를 추가해야합니다.successfully response
를 확인하는 방법 데이터가 비어 있습니다@Override public void onResponse(String response) { try { JSONObject jsonObject = new JSONObject(response); JSONArray array = jsonObject.getJSONArray("data"); if (array == null || array.length() == 0) { //data array is empty // add the logic you want } else { //data array not empty for (int i = 0; i < array.length(); i++) { JSONObject ob = array.getJSONObject(i); Notificacion listData = new Notificacion(ob.getString("id_notificacion") , ob.getString("texto"), ob.getString("fecha"), ob.getString("nombre"), ob.getString("nombre") + " " + ob.getString("apellidos"), ob.getString("profesor"), ob.getString("tutor"), ob.getString("estado"), ob.getString("envia_tutor"), ob.getString("envia_profesor") ); list_data.add(listData); spinner.setVisibility(View.GONE); } rv.setAdapter(adapter); } } catch (JSONException e) { e.printStackTrace(); } }
관련 자료
- mpi - MPI_Isend () MPI_and Irecv ()를 사용할 때 쌍이 동일한 요청을 사용해야합니까? 메시지가 이미 배열 인 경우 어떻게 전달해야합니까?
- php - 어떤 SQL 요청을 사용해야합니까?
- 다음과 같이 본문으로 안드로이드 발리 요청을하는 법
- android - 문자열 길이가 길면 발리 요청이 실패합니다
- java - 발리 긴 HTTPS 요청이 응답하지 않음
- java - POST 또는 GET 요청 매개 변수가 15를 초과하는 경우 무엇을 사용해야합니까?
- Android Volley를 사용하여 게시물 요청에서 데이터를 검색하는 방법
- android - recyclerview 어댑터 내부의 발리 요청
- 안드로이드에서 발리 또는 개조와 함께 원시 JSON을 사용하여 게시물 요청을 보내는 방법
- android - 모델이 null을 유추해야합니까?
다음과 같이 코드를 변경해야합니다 :