2015-04-27 5 views
0

Я два AutoCompleteTextView, в моем первом autocomplet, я получаю ответ от сервера,Как получить идентификатор autocomplettextview?

{"status":"success","clientlist":[{"cid":"1","name":"margi"},{"cid":"2","name":"steven"}],"productboxtype":[{"pbxid":"1","pbxname":"1 Dozen","qtyperbox":"12"},{"pbxid":"2","pbxname":"2 Dozens","qtyperbox":"24"},{"pbxid":"3","pbxname":"3 Dozens","qtyperbox":"36"}]} 

я могу получить имена в моем первом автозаполнения и она отлично работает,

Теперь вопрос предположим, что пользователь выберите пункт «Марг» и его ИДС 1, так что снова я посылаю запрос на сервер и пытаюсь получить productnames из «Марг», и его ответ

{"status":"success","clientproduct":[{"pid":"4","name":"kangan pair","unitprice":"1500","boxqty":"1"}]} 

, но после выбора Steven еще показывает Kangan Пари во втором а utocomplete

 @Override 
    protected String doInBackground(String...args) { 
     //Check for success tag 
     //int success; 
     Looper.prepare(); 



     try { 

      JsonParseClientList jp=new JsonParseClientList(); 
       List<NameValuePair> params = new ArrayList<NameValuePair>(); 
      List<SuggestGetSetClientList> list =jp.getParseJsonWCF(acTextView.getText().toString()); 

       for(int i = 0;i<list.size();i++) 
       { 
        if(list.get(i).getName().equals(acTextView.getText().toString())) 
        params.add(new BasicNameValuePair("cid",list.get(i).getId())); 

        // catid=list.get(i).getId(); 



       } 

       for(int b=0;b<list.size();b++) 
       { 
        catidtemp=list.get(b).id.toString(); 

        System.out.println("cattttttiiiiddd????"+catidtemp); 
        break; 
       } 

       //catidtemp=String.valueOf(selected_cid); 

      System.out.println("cattttttiiiiddd????"+catidtemp); 
      params.add(new BasicNameValuePair("action", "clientproduct")); 

      System.out.println("su gayu server ma????"+params); 

      Log.d("request!", "starting"); 
      // getting product details by making HTTP request 
      JSONObject json = jsonParser.makeHttpRequest (
       FEEDBACK_URL, "POST", params); 
      //check your log for json response 
      Log.d("Login attempt", json.toString()); 





      return json.getString(FEEDBACK_SUCCESS); 

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

    // After completing background task Dismiss the progress dialog 

    protected void onPostExecute(String file_url) { 
     //dismiss the dialog once product deleted 
     pDialog.dismiss(); 

     //parentcat.getText().clear(); 
}} 

ответ

0
JSONObject resultObject = new JsonObject(result); //where result is {"status":"success","clientlist":[{"cid":"1","name":"margi"},{"cid":"2","name":"steven"}],"productboxtype":[{"pbxid":"1","pbxname":"1 Dozen","qtyperbox":"12"},{"pbxid":"2","pbxname":"2 Dozens","qtyperbox":"24"},{"pbxid":"3","pbxname":"3 Dozens","qtyperbox":"36"}]} 
JSONArray clientListArray = resultObject.getJSONArray("clientlist"); 
for (int i=0; i<clientListArray.length(); i++){ 
    JSONObject client = clientListArray.getJSONObject(i); 
    int id = client.getInt("cid"); 
    ... 
    Client clientInfo = new Client(id, name); 
    clientList.add(clientInfo) 
    .... 
} 

Затем вы можете использовать clientList в адаптер или что-то другое.

Вы можете сделать класс, который держит свои данные

public class Client{ 
    int id; 
    String name; 

    //getter and setter for this + constructor; 
} 

Чтобы не усложнять контрольный код: https://code.google.com/p/google-gson/ и искать какие-то уроки, которые объясняют лучше использование

Кроме того, если вы измените адаптер информации Дон» t Забыл (а):

adapter.notifyDataSetChanged(); 
+0

спасибо, но я решил это – chris

0

Если вы хотите сравнить «boxqty» и «minimum_qty», в вашем состоянии, если, вы не должны использовать его .length() для boxqty, так как она будет просто вычислить длину строки, пользователь войдет, а не его значение.

+0

проверить мой вопрос – chris

0

Я думаю, что когда вы выберете «steven», вы получите массив clientproduct null в ответ. Поэтому вот почему ваш блок catch вызывается, а ваш автозаполненный сегмент секунд не ясен. Вот почему вы получаете предыдущее значение во втором автозаполнении.

Надеется, что вы можете понять :) Счастливых Coding :)