2016-08-31 2 views
0

Это мой код для вращателя выпадающего списка, который заполняет от ответа server.Json, как этотСохранение только Последний идентификатор ответа JSon

[{"ServiceId":"1","ServiceName":"AC"}, 
{"ServiceId":"5","ServiceName":"Plumbing"}, 
{"ServiceId":"27","ServiceName":"Others"}] 

Я пытаюсь отправить службы идентификатор для исх. соответствующего имени службы в базу данных, но до сих пор сохраняет только последний идентификатор службы в базе данных. Т.е. Идентификатор службы не получает соответствующее имя службы. Как решить эту проблему?

adapter = new ArrayAdapter<String>(this, R.layout.spinner_layout_adapter, R.id.txt, listItems); 
//  adapter.add("Select Service"); 
//  service_need.setAdapter(adapter); 


     Bundle bundle = getIntent().getExtras(); 
     String stuff1 = bundle.getString("local"); 
     autoCompView.setText(stuff1); 

     String name = bundle.getString("name"); 

     adapter.add(name); 
     service_need.setAdapter(adapter); 
    } 

    private void registerUser() { 

     final SharedPreferences mSharedPreference= PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
     final String value=(mSharedPreference.getString("customerId", "Default_Value")); 


     final String customer_id =value.toString().trim(); 
     final String username = editname.getText().toString().trim(); 
     final String house = houseNo.getText().toString().trim(); 
     final String local_area = autoCompView.getText().toString().trim(); 
     final String service = obj.getBytes().toString().trim(); 
     final String mobile_no = mobile.getText().toString().trim(); 
     final String email_id = email.getText().toString().trim(); 
     final String prob = problem.getText().toString().trim(); 



     StringRequest stringRequest = new StringRequest(Request.Method.POST, REGISTER_URL, 
       new Response.Listener<String>() { 


        @Override 
        public void onResponse(String response) { 

         hidePDialog(); 
         try { 
          //String result=""; 
          //Do it with this it will work 
          JSONArray jsonarray = new JSONArray(response); 
          for (int i = 0; i < jsonarray.length(); i++) { 
           JSONObject person = jsonarray.getJSONObject(i); 
           String excep = person.getString("Exception"); 
           String message1 = person.getString("Message"); 
           String job = person.getString("JobNo"); 

           if (excep.equalsIgnoreCase("True")) { 
            Toast.makeText(Form.this, excep, Toast.LENGTH_LONG) 
              .show(); 
           } else { 

            Toast.makeText(Form.this, excep, Toast.LENGTH_LONG) 
              .show(); 
            editname.setText(""); 
            // if email and mb is valid than login 

            Intent i1 = new Intent(Form.this, Suceessful.class); 
            i1.putExtra("job_id", job); 
            startActivity(i1); 
            finish(); 
            Toast.makeText(Form.this, excep.toString(), Toast.LENGTH_LONG).show(); 
            Toast.makeText(Form.this, message1.toString(), Toast.LENGTH_LONG).show(); 
            Toast.makeText(Form.this, job.toString(), Toast.LENGTH_LONG).show(); 
           } 
          } 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 

        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         Toast.makeText(Form.this, error.toString(), Toast.LENGTH_LONG).show(); 

        } 
       }) { 
      @Override 
      protected Map<String, String> getParams() { 
       Map<String, String> params = new HashMap<String, String>(); 
       params.put(CUSTOMERID,customer_id); 
       params.put(USERNAME, username); 
       params.put(HOUSENO, house); 
       params.put(LOCALITY, local_area); 
       params.put(SERVICE, obj); 
       params.put(MOBILE, mobile_no); 
       params.put(EMAIL, email_id); 
       params.put(PROBLEM, prob); 
       return params; 
      } 

     }; 

     RequestQueue requestQueue = Volley.newRequestQueue(this); 
     requestQueue.add(stringRequest); 


    } 



    public void onStart() { 
     super.onStart(); 
     BackTask bt = new BackTask(); 
     bt.execute(); 
    } 

    private class BackTask extends AsyncTask<Void, Void, Void> { 
     ArrayList<String> list; 

     protected void onPreExecute() { 
      super.onPreExecute(); 
      list = new ArrayList<>(); 

     } 

     protected Void doInBackground(Void... params) { 
      InputStream is = null; 
      String result = ""; 
      try { 
       HttpClient httpclient = new DefaultHttpClient(); 
       HttpPost httppost = new HttpPost("http://my_url/GetServiceList"); 
       HttpResponse response = httpclient.execute(httppost); 
       HttpEntity entity = response.getEntity(); 
       // Get our response as a String. 
       is = entity.getContent(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

      //convert response to string 
      try { 
       BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8")); 
       String line = null; 
       while ((line = reader.readLine()) != null) { 
        result += line; 
       } 
       is.close(); 
       //result=sb.toString(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      // parse json data 
      try { 
       JSONArray jArray = new JSONArray(result); 
       for (int i = 0; i < jArray.length(); i++) { 
        JSONObject jsonObject = jArray.getJSONObject(i); 
        // add interviewee name to arraylist 
        list.add(jsonObject.getString("ServiceName")); 
//     list.add(jsonObject.getString("ServiceId")); 
        obj =jsonObject.getString("ServiceId"); 


       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
      return null; 
     } 

     protected void onPostExecute(Void result) { 
      listItems.addAll(list); 
      adapter.notifyDataSetChanged(); 
     } 

    } 

} 

Вход

09-01 14:21:41.243 5800-6053/com.enventpc_03.service99 I/System.out: URL: https://maps.googleapis.com/maps/api/place/autocomplete/json?key=AIzaSyBdNoHzzo8PlGtv8Xa96uMZdKJbv6N8m8Q&components=country:in&components=administrative_area_level_3:lucknow&input=ddfss 
09-01 14:21:41.643 5800-6131/com.enventpc_03.service99 D/jsonObject: {"ServiceName":"AC","ServiceId":"1"} 
09-01 14:21:41.653 5800-6131/com.enventpc_03.service99 D/jsonObject: {"ServiceName":"Plumbing","ServiceId":"5"} 
09-01 14:21:41.673 5800-6131/com.enventpc_03.service99 D/jsonObject: {"ServiceName":"Refrigerator","ServiceId":"3"} 
09-01 14:21:41.683 5800-6131/com.enventpc_03.service99 D/jsonObject: {"ServiceName":"Appliances","ServiceId":"7"} 
09-01 14:21:41.763 5800-6131/com.enventpc_03.service99 D/jsonObject: {"ServiceName":"RO","ServiceId":"21"} 
09-01 14:21:42.363 5800-6131/com.enventpc_03.service99 D/jsonObject: {"ServiceName":"Electrical","ServiceId":"6"} 
09-01 14:21:42.393 5800-6131/com.enventpc_03.service99 D/jsonObject: {"ServiceName":"Mobile","ServiceId":"4"} 
09-01 14:21:42.663 5800-6131/com.enventpc_03.service99 D/jsonObject: {"ServiceName":"Computers","ServiceId":"9"} 
09-01 14:21:42.693 5800-6131/com.enventpc_03.service99 D/jsonObject: {"ServiceName":"Tablets","ServiceId":"8"} 
09-01 14:21:42.693 5800-6131/com.enventpc_03.service99 D/jsonObject: {"ServiceName":"Home Security","ServiceId":"22"} 
09-01 14:21:42.704 5800-6131/com.enventpc_03.service99 D/jsonObject: {"ServiceName":"Others","ServiceId":"27"} 
09-01 14:21:43.273 302-424/system_process A/NetworkStats: problem reading network stats 
                  java.lang.IllegalStateException: problem parsing line: null 
                   at com.android.internal.net.NetworkStatsFactory.readNetworkStatsDetail(NetworkStatsFactory.java:313) 
                   at com.android.server.NetworkManagementService.getNetworkStatsUidDetail(NetworkManagementService.java:1271) 
                   at com.android.server.net.NetworkStatsService.performPollLocked(NetworkStatsService.java:810) 
                   at com.android.server.net.NetworkStatsService.performPoll(NetworkStatsService.java:771) 
                   at com.android.server.net.NetworkStatsService.access$100(NetworkStatsService.java:128) 
                   at com.android.server.net.NetworkStatsService$3.onReceive(NetworkStatsService.java:610) 
                   at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:728) 
                   at android.os.Handler.handleCallback(Handler.java:605) 
                   at android.os.Handler.dispatchMessage(Handler.java:92) 
                   at android.os.Looper.loop(Looper.java:137) 
                   at android.os.HandlerThread.run(HandlerThread.java:60) 
                  Caused by: java.io.FileNotFoundException: /proc/net/xt_qtaguid/stats: open failed: ENOENT (No such file or directory) 
                   at libcore.io.IoBridge.open(IoBridge.java:406) 
                   at java.io.FileInputStream.<init>(FileInputStream.java:78) 
                   at java.io.FileReader.<init>(FileReader.java:42) 
                   at com.android.internal.net.NetworkStatsFactory.readNetworkStatsDetail(NetworkStatsFactory.java:272) 
                   at com.android.server.NetworkManagementService.getNetworkStatsUidDetail(NetworkManagementService.java:1271)  
                   at com.android.server.net.NetworkStatsService.performPollLocked(NetworkStatsService.java:810)  
                   at com.android.server.net.NetworkStatsService.performPoll(NetworkStatsService.java:771)  
                   at com.android.server.net.NetworkStatsService.access$100(NetworkStatsService.java:128)  
                   at com.android.server.net.NetworkStatsService$3.onReceive(NetworkStatsService.java:610)  
                   at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:728)  
                   at android.os.Handler.handleCallback(Handler.java:605)  
                   at android.os.Handler.dispatchMessage(Handler.java:92)  
                   at android.os.Looper.loop(Looper.java:137)  
                   at android.os.HandlerThread.run(HandlerThread.java:60)  
                  Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory) 
                   at libcore.io.Posix.open(Native Method) 
                   at libcore.io.BlockGuardOs.open(BlockGuardOs.java:98) 
                   at libcore.io.IoBridge.open(IoBridge.java:390) 
                   at java.io.FileInputStream.<init>(FileInputStream.java:78)  
                   at java.io.FileReader.<init>(FileReader.java:42)  
                   at com.android.internal.net.NetworkStatsFactory.readNetworkStatsDetail(NetworkStatsFactory.java:272)  
                   at com.android.server.NetworkManagementService.getNetworkStatsUidDetail(NetworkManagementService.java:1271)  
                   at com.android.server.net.NetworkStatsService.performPollLocked(NetworkStatsService.java:810)  
                   at com.android.server.net.NetworkStatsService.performPoll(NetworkStatsService.java:771)  
                   at com.android.server.net.NetworkStatsService.access$100(NetworkStatsService.java:128)  
                   at com.android.server.net.NetworkStatsService$3.onReceive(NetworkStatsService.java:610)  
                   at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:728)  
                   at android.os.Handler.handleCallback(Handler.java:605)  
                   at android.os.Handler.dispatchMessage(Handler.java:92)  
                   at android.os.Looper.loop(Looper.java:137)  
                   at android.os.HandlerThread.run(HandlerThread.java:60)  
+0

Пожалуйста, поделитесь полным кодом класса. Я полагаю, у вас есть петля? –

+0

Это полный код с именем службы и идентификатором службы. Никакой другой цикл не реализован. – Adi

ответ

0

Вы должны инициализировать список внутри цикла для этого вызова ссылочной проблемы. Итак, сделайте следующее:

.... 
// parse json data 
try { 
    JSONArray jArray = new JSONArray(result); 
    for (int i = 0; i < jArray.length(); i++) { 
     list = new ArrayList<>(); 
     JSONObject jsonObject = jArray.getJSONObject(i); 

     // add interviewee name to arraylist 
     list.add(jsonObject.getString("ServiceName")); 
     list.add(jsonObject.getString("ServiceId")); 
     obj =jsonObject.getString("ServiceId"); 
    } 
} catch (JSONException e) { 
    e.printStackTrace(); 
} 
... 
+0

Еще одна проблема с еще одним вопросом, который, spinner не заполняет все данные. – Adi

+0

@Adi Извините, но я не могу видеть объявление listItems внутри внутреннего класса –

+0

Я только что изменил код в соответствии с ответом ur в моем ide – Adi

Смежные вопросы