Надеюсь, это сработает для вас.
В вашей деятельности инициализируйте переменные, такие как
Spinner spinner;
ArrayList<String> cityArraylist;
ArrayAdapter<String> stringArrayAdapter;
Добавьте AsyncTask
и Handler
, как указано ниже в вашей деятельности.
public class AsyncTaskCity extends AsyncTask<Object, Object, ArrayList<String>> {
Handler handler;
ArrayList<String> cityLst;
public AsyncTaskCity(Handler handler) {
this.handler = handler;
cityLst = new ArrayList();
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected ArrayList<String> doInBackground(Object... objects) {
ContentValues param = new ContentValues();
JSONObject rootObj = parser.makeHttpUrlRequest(Constants.GET_CITY_LIST, "GET", param);
System.out.println("Result"+rootObj);
try{
if(rootObj != null) {
String status = rootObj.getString(Constants.SVC_STATUS);
if (Constants.STATUS_SUCCESS.equals(status)) {
JSONArray jsonArray = rootObj.getJSONArray("lstCity");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String city=jsonObject.getString("city");
cityLst.add(city);
}
}
}
} catch (JSONException ex) {
ex.printStackTrace();
}
return cityLst;
}
@Override
protected void onPostExecute(ArrayList<String> contactses) {
super.onPostExecute(contactses);
Message message = new Message();
message.obj = contactses;
handler.sendMessage(message);
}
}
public class cityHandler extends Handler{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.obj==null){
return;
}
ArrayList<String> localConatcts= (ArrayList<String>) msg.obj;
cityArraylist.addAll(localConatcts);
stringArrayAdapter.notifyDataSetChanged();
}
}
в вашей Деятельности onCreate()
вызов метода, подобный этому
spinner = (Spinner) findViewById(R.id.spinner);
cityArraylist=new ArrayList<>();
new AsyncTaskCity(new cityHandler()).execute((Object[]) null);
stringArrayAdapter=new ArrayAdapter<String>(MySpinnerTest.this, android.R.layout.simple_spinner_dropdown_item, cityArraylist);
spinner.setAdapter(stringArrayAdapter);
и убедитесь, что данные будут добавлены в массив из анализа json в методе doInBackground
.