2015-12-24 5 views
0

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

{ 

"user_city": "Kolkata", 
"user_state": "West Bengal", 

} 

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

это ответ

[{"user_status":"1","state_id":"1","state":"Karnataka"},{"user_status":"1","state_id":"2","state":"Tamilnadu"},{"user_status":"1","state_id":"3","state":"Maharastra"},{"user_status":"1","state_id":"4","state":"Andhra Pradesh"},{"user_status":"1","state_id":"5","state":"West Bengal"},{"user_status":"1","state_id":"6","state":"Delhi"},{"user_status":"1","state_id":"8","state":"Andaman & Nicobar Islands"},{"user_status":"1","state_id":"9","state":"Arunachal Pradesh"},{"user_status":"1","state_id":"10","state":"Bihar"},{"user_status":"1","state_id":"11","state":"Chattisgarh"},{"user_status":"1","state_id":"12","state":"Dadra & Nagar Haveli"},{"user_status":"1","state_id":"13","state":"Daman & Diu"},{"user_status":"1","state_id":"14","state":"Goa"},{"user_status":"1","state_id":"15","state":"Gujarat"},{"user_status":"1","state_id":"16","state":"Haryana"},{"user_status":"1","state_id":"17","state":"Himachal Pradesh"},{"user_status":"1","state_id":"18","state":"Jharkhand"},{"user_status":"1","state_id":"19","state":"Kerala"},{"user_status":"1","state_id":"20","state":"Lakshadweep"},{"user_status":"1","state_id":"21","state":"Madhya pradesh"},{"user_status":"1","state_id":"22","state":"Pondichery"},{"user_status":"1","state_id":"23","state":"Punjab"},{"user_status":"1","state_id":"24","state":"Rajasthan"},{"user_status":"1","state_id":"25","state":"Sikkim"},{"user_status":"1","state_id":"26","state":"Telangana"},{"user_status":"1","state_id":"27","state":"Tripura"},{"user_status":"1","state_id":"28","state":"Uttaranchal"},{"user_status":"1","state_id":"29","state":"Uttar Pradesh"},{"user_status":"1","state_id":"31","state":"Nagaland"},{"user_status":"1","state_id":"32","state":"Mizoram"},{"user_status":"1","state_id":"33","state":"Meghalaya"},{"user_status":"1","state_id":"34","state":"Manipur"},{"user_status":"1","state_id":"35","state":"Assam"},{"user_status":"1","state_id":"36","state":"Chandigarh"},{"user_status":"1","state_id":"37","state":"Orissa"},{"user_status":"1","state_id":"38","state":"Others"}] 

Загрузка профиля

class LoadAllProdetails extends 
      AsyncTask<String, String, ArrayList<HashMap<String, String>>> { 
     private ProgressDialog pDialog; 
     private String test; 
     private JSONObject jsonObjsss; 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(Profiles.this.getActivity()); 
      pDialog.setMessage("Please wait.."); 
      pDialog.setIndeterminate(true); 
      pDialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.custom_progress)); 
      pDialog.setCancelable(true); 
      pDialog.show(); 
     } 
     protected ArrayList<HashMap<String, String>> doInBackground(
       String... args) { 
      ServiceHandler sh = new ServiceHandler(); 
      // Making a request to url and getting response 

      String jsonStr = sh.makeServiceCall(GET_PRO_DETAILS, ServiceHandler.GET); 
      Log.d("Response: ", "> " + jsonStr); 
      if (jsonStr != null) { 
       try { 
        jsonObjsss = new JSONObject(jsonStr); 
        // state_list = jsonObj.getJSONArray(COUNTRY_LIST); 
        // looping through All Contacts 

        profilessstates=new ArrayList<HashMap<String,String>>(); 

        profilecitis=new ArrayList<HashMap<String,String>>(); 

        if(jsonObjsss.getString(GET_PRO_USERSTATUS).equals("0")) 
        { 
         final String msgs=jsonObjsss.getString("message"); 
         System.out.println("Messagessss"+msgs); 
         getActivity().runOnUiThread(new Runnable() 
         { 
          @Override 
          public void run() 
          { 

           Toast.makeText(getActivity(), msgs, Toast.LENGTH_LONG).show(); 
          } 
         }); 
        } 
        else if(jsonObjsss.getString(GET_PRO_USERSTATUS).equals("1")) { 

         HashMap<String, String> mapzz = new HashMap<String, String>(); 
         usersstatus = jsonObjsss.getString(GET_PRO_USERSTATUS); 
         usersfname = jsonObjsss.getString(GET_PRO_FIRSTNAME); 
         usersmails = jsonObjsss.getString(GET_PRO_EMAILS); 
         usersmob = jsonObjsss.getString(GET_PRO_MOBILE); 
         usersdobs = jsonObjsss.getString(GET_PRO_DATES); 
         usersaddresss = jsonObjsss.getString(GET_PRO_ADDRESS); 
         userszipss = jsonObjsss.getString(GET_PRO_ZIP); 
         userstates=jsonObjsss.getString(GET_PRO_STATE); 
         usercitys=jsonObjsss.getString(GET_PRO_CITY); 

         mapzz.put(GET_PRO_STATE, jsonObjsss.getString(GET_PRO_STATE)); 

         mapzz.put(GET_PRO_CITY, jsonObjsss.getString(GET_PRO_CITY)); 
         profilessstates.add(mapzz); 

         profilecitis.add(mapzz); 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } else { 
       Log.e("ServiceHandler", "Couldn't get any data from the url"); 
      } 
      return profilessstates; 
     } 
     protected void onPostExecute(ArrayList<HashMap<String, String>> result) { 
      super.onPostExecute(result); 
      pDialog.dismiss(); 
      updtfname.setText(usersfname); 
      updtmail.setText(usersmails); 
      updtmob.setText(usersmob); 
      updtaddress.setText(usersaddresss); 
      updtpin.setText(userszipss); 
      datestext.setText(usersdobs); 

      arrprostates = new String[profilessstates.size()]; 
      for (int index = 0; index < profilessstates.size(); index++) { 
       HashMap<String, String> map = profilessstates.get(index); 
       arrprostates[index] = map.get(GET_PRO_STATE); 
      } 
      adapterprostates = new ArrayAdapter<String>(
        Profiles.this.getActivity(), 
        android.R.layout.simple_spinner_dropdown_item, arrprostates); 
      statespinner.setAdapter(adapterprostates); 



      arrprocities = new String[profilecitis.size()]; 
      for (int index = 0; index < profilecitis.size(); index++) { 
       HashMap<String, String> map = profilecitis.get(index); 
       arrprocities[index] = map.get(GET_PRO_CITY); 
      } 
      adapterprocities = new ArrayAdapter<String>(
        Profiles.this.getActivity(), 
        android.R.layout.simple_spinner_dropdown_item, arrprocities); 
      cityspinner.setAdapter(adapterprocities); 

Для загрузки всех государств-

class LoadStatess extends 
      AsyncTask<String, String, ArrayList<HashMap<String, String>>> { 
     private ProgressDialog pDialog; 
     private String test; 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(Profiles.this.getActivity()); 
      pDialog.setMessage("Please wait.."); 
      pDialog.setIndeterminate(true); 
      pDialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.custom_progress)); 
      pDialog.setCancelable(true); 
      pDialog.show(); 
     } 
     protected ArrayList<HashMap<String, String>> doInBackground(
       String... args) { 
      ServiceHandler sh = new ServiceHandler(); 
      // Making a request to url and getting response 
      statedata = new ArrayList<HashMap<String, String>>(); 
      String jsonStr = sh.makeServiceCall(STATE_URL, ServiceHandler.GET); 
      Log.d("Response: ", "> " + jsonStr); 
      if (jsonStr != null) { 
       try { 
        jsonObj = new JSONArray(jsonStr); 
        // state_list = jsonObj.getJSONArray(COUNTRY_LIST); 
        // looping through All Contacts 
        for (int i = 0; i < jsonObj.length(); i++) { 
         JSONObject c = jsonObj.getJSONObject(i); 
         // creating new HashMap 
         HashMap<String, String> map = new HashMap<String, String>(); 
         // adding each child node to HashMap key => value 
         map.put(USER_STATUSS, c.getString(USER_STATUSS)); 
         map.put(PRESET_TITLES, c.getString(PRESET_TITLES)); 
         statedata.add(map); 

        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } else { 
       Log.e("ServiceHandler", "Couldn't get any data from the url"); 
      } 
      return statedata; 
     } 
     protected void onPostExecute(ArrayList<HashMap<String, String>> result) { 
      super.onPostExecute(result); 
      // pDialog.dismiss(); 
      arrallstates = new String[statedata.size()]; 
      for (int index = 0; index < statedata.size(); index++) { 
       HashMap<String, String> map = statedata.get(index); 
       arrallstates[index] = map.get(PRESET_TITLES); 
      } 
      // pass arrConuntry array to ArrayAdapter<String> constroctor : 
      adapterallstates = new ArrayAdapter<String>(
        Profiles.this.getActivity(), 
        android.R.layout.simple_spinner_dropdown_item, arrallstates); 

      statespinner.setAdapter(adapterallstates); 

      statespinner.setPrompt("Select State"); 
      statespinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
       @Override 
       public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
        spitems = statespinner.getSelectedItem().toString(); 
        System.out.println("PresetEVent selected" + spitems); 


        new Logincity().execute(); 
       } 

       @Override 
       public void onNothingSelected(AdapterView<?> adapterView) { 
       } 
      }); 
     } 
    } 

первый экран по умолчанию получить

enter image description here

затем я нажмите, чтобы загрузить состояние он показывает enter image description here

затем снова я нажимаю только он показывает

enter image description here

ответ

0

Поместите эти строки в OnCreate метод вашей деятельности.

adapterallstates = new ArrayAdapter<String>(Profiles.this.getActivity(),android.R.layout.simple_spinner_dropdown_item, new ArrayList<String>()); 
statespinner.setAdapter(adapterallstates); 

и удалите эти строки из onPostExecute:

adapterallstates = new ArrayAdapter<String>(Profiles.this.getActivity(),android.R.layout.simple_spinner_dropdown_item, arrallstates); 
statespinner.setAdapter(adapterallstates); 

и добавьте эти строки в цикл из onPostExecute.

adapterallstates.add(map.get(PRESET_TITLES)); 
adapterprostates.notifyDataSetChanged(); 

Сделайте это, он будет работать на вас.

+0

где ?? Вы можете сказать, где именно – albert

+0

я столкнулся с той же проблемой, что время я сделал это. Это помогло. @ Jolly –

+0

см. Мой отредактированный questio – albert

0

другой является,

@Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      LoadListView(); 
    } 

    private void LoadListView() { 
      try { 
       statespinner.setAdapter(adapterprostates); 

      } catch (Exception e) { 
       e.printStacktrace(); 
      } 
     } 
+0

Вы пробовали это? Есть проблема ? –

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