2017-02-14 2 views
0

나는 이미 그 문제를 게시하지만 아무도 해결책을 제공하지 못한다. 다시 말해서 나의 게시물을 다시 편집한다. 그래서 나는 & 포스트를 다시 삭제한다.어떻게 응답 배열을 잡아 & Listview에 설정? 배열 형태로 응답하고 안드로이드에서 listview를 설정하는 방법?

나는 StringRequest 클래스 &의 반응을 잘 모른다. 간단한 & 적절한 guide.it 응답으로 하나의 Jsonobject하지만 배열하지 말아주세요. 이 JSON 응답에서 내가하지 않는 데이터의 배열은 배열 & 다음 목록보기

서버 응답

I/System.out: 
{ 
"success":true,"first_name":"savha","last_name":"jiii","mobile":2147483647 
} 
W/System.err: org.json.JSONException: 
Value 
{ 
"success":true,"first_name":"savha","last_name":"jiii","mobile":2147483647 
} 
of type org.json.JSONObject cannot be converted to JSONArray 

JSON StringRequest 발리

PHP 코드

< ?php 

$con=mysqli_connect(XXXXXXXXXXXXXX); 

$state=$_POST["state"]; 

$dist=$_POST["dist"]; 

$statement=mysqli_prepare($con,"SELECT first_name,last_name,mobile FROM first  WHERE state=? AND dist=?"); 

mysqli_stmt_bind_param($statement,"ss",$state,$dist); 

mysqli_stmt_execute($statement); 

mysqli_stmt_store_result($statement); 

mysqli_stmt_bind_result($statement,$fname,$lname,$mobile); 

$response=array(); 

$response["success"]=false; 

while(mysqli_stmt_fetch($statement)) 

{ 

$response["success"]=true; 

$response["first_name"]=$fname; 

$response["last_name"]=$lname; 

$response["mobile"]=$mobile; 

} 

echo json_encode($response); 

?> 
설정 잡는 방법을 알고

ServiceRequest 클래스

public class SevakRequest extends StringRequest { 

private static final String LOGIN_REQUEST_URL="http://XXXXXX.php"; 
private Map<String ,String> params; 

public SevakRequest(String state,String dist, Response.Listener<String> listener) 
{ 
    super(Method.POST,LOGIN_REQUEST_URL,listener,null); 
    params=new HashMap<>(); 
    // params.put("service",service); 
    params.put("state",state); 
    params.put("dist",dist); 
} 

@Override 
public Map<String, String> getParams() { 
    return params; 
} 
} 

모든

public class SearchResult extends Activity { 
Button btn1,btn2; 
ListView lv1; 
TextView tv1; 
String serv, stat, dist; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_search_result); 
    btn1 = (Button) findViewById(R.id.btn1); 
    btn2 = (Button) findViewById(R.id.btn2); 
    lv1 = (ListView) findViewById(R.id.lv1); 
    tv1 = (TextView) findViewById(R.id.tv1); 

    Intent in = getIntent(); 
    serv = in.getStringExtra("key1"); 
    stat = in.getStringExtra("key2"); 
    dist = in.getStringExtra("key3"); 
    tv1.setText(serv + " >> " + stat + " >> " + dist); 

    Response.Listener<String> listener = new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      try { 
       JSONObject jsonResponse = new JSONObject(response); 
       boolean success = jsonResponse.getBoolean("success"); 

       if (success) { 
        JSONArray jsonArray = new JSONArray(response); 
        int length = jsonArray.length(); 
        List<String> listContents = new ArrayList<String>(length); 
        for (int i = 0; i < length; i++) { 
         String fname = jsonResponse.getString("first_name").toString(); 
         String lname = jsonResponse.getString("last_name").toString(); 
         String mobile = jsonResponse.getString("mobile").toString(); 
         listContents.add("First name: " + fname + "\nLast name: " + lname + "\nMobile: " + mobile); 
        } 
        lv1.setAdapter(new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, listContents)); 

       } else { 
        Toast.makeText(getApplicationContext(), "Error occurred", Toast.LENGTH_LONG).show(); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    }; 
    SevakRequest sevakRequest = new SevakRequest(stat, dist, listener); 
    RequestQueue queue = Volley.newRequestQueue(getApplicationContext()); 
    queue.add(sevakRequest); 
} 
} 
+0

귀하의 서버 응답을 게시하십시오. – Piyush

+0

'I/System.out : { "성공": true, "first_name": "savha", "last_name": "jiii", "mobile": 2147483647 } W/System.err : org.json .JSONException : 값 는 { "성공"사실, "FIRST_NAME": "savha", "LAST_NAME": "jiii", "모바일": 2147483647 } 형 org.json.JSONObject의 은 JSONArray로 변환 할 수 없습니다 ' –

+0

이제 문제가 추가되었습니다 –

답변

0

첫 MainActivity 클래스하면 JSON 데이터가 올바른 하나입니다 확인합니다. 난 당신이 원하는 것 같아요 : 앱 개발에 집중할 수 있도록 지금은 그냥 정적 JSON 파일을 반환

{ 
    "success": true, 
    "data": [{ 
    "first_name": "savha", 
    "last_name": "jiii", 
    "mobile": 2147483647 
    }, { 
    "first_name": "john", 
    "last_name": "smith", 
    "mobile": 333123456 
    }] 
} 

하십시오. JSONArray arr = jsonResponse.getJSONArray("data");과 같은 java 코드를 변경하면 문의처 배열 개체을 얻을 수 있습니다.

필자는 json en-/decode를 쉽게하기 위해 Gson과 같은 라이브러리를 선호한다.