Spinner未显示Android

Spinner未显示Android,android,android-studio,spinner,android-spinner,Android,Android Studio,Spinner,Android Spinner,我使用spinner来显示来自json的数据,但它在屏幕上什么也没有显示。我正在使用first time,因此我想分享我为spinner所做的工作。我的代码是: 在XML中: <Spinner android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/spinner_location"> </Spinne

我使用spinner来显示来自json的数据,但它在屏幕上什么也没有显示。我正在使用first time,因此我想分享我为spinner所做的工作。我的代码是:

在XML中:

<Spinner
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/spinner_location">
    </Spinner>

在活动中:

 private Spinner spinner;
 spinner=(Spinner)findViewById(R.id.spinner_location);

  private class GetCity extends AsyncTask<String, String, String>{

    @Override
    protected String doInBackground(String... strings) {
        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 null;
    }
      @Override
    protected void onPostExecute(String s) {

        spinner.setAdapter(new ArrayAdapter<String>
                (DoctorListActivity.this, android.R.layout.simple_spinner_dropdown_item, cityLst));
    }
专用微调器微调器;
微调器=(微调器)findViewById(R.id.spinner\u位置);
私有类GetCity扩展异步任务{
@凌驾
受保护的字符串背景(字符串…字符串){
ContentValues参数=新的ContentValues();
JSONObject rootObj=parser.makeHttpUrlRequest(Constants.GET_CITY_LIST,“GET”,param);
System.out.println(“结果”+rootObj);
试一试{
if(rootObj!=null){
String status=rootObj.getString(Constants.SVC_status);
if(常量状态_成功等于(状态)){
JSONArray JSONArray=rootObj.getJSONArray(“lstCity”);
for(int i=0;i
我在onCreate()中调用这个类。 请尽快告诉我最好的答案。谢谢。

尝试移动

spinner.setAdapter(new ArrayAdapter<String>
                    (MainActivity.this, android.R.layout.simple_spinner_dropdown_item, cityLst));

我希望这对你有用

在活动中初始化变量,如

Spinner spinner;
ArrayList<String> cityArraylist;
ArrayAdapter<String> stringArrayAdapter; 
在活动
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);
spinner=(spinner)findViewById(R.id.spinner);
cityArraylist=新建ArrayList();
新建AsyncTaskCity(new cityHandler()).execute((Object[])null;
stringArrayAdapter=新的ArrayAdapter(MySpinnerTest.this,android.R.layout.simple\u微调器\u下拉列表\u项,cityArraylist);
spinner.setAdapter(stringArrayAdapter);
并确保数据将通过
doInBackground
方法中的json解析添加到arraylist中。

试试这个。你可以在spinner中获得城市
    Try this one.You can get the city in spinner




   ArrayList<String> listCity = new ArrayList<>();
     ArrayAdapter<String> adapterCity;
     Spinner  spn_city;

     spn_city=(Spinner)findViewById(R.id.spinner_location);

     GetCityextends bt = new GetCityextends();
            bt.execute();


  adapterCity = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, listCity);
            adapterCity.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spn_city.setAdapter(adapterCity );


    private class GetCityextends 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();
                    HttpGet httpGet = new HttpPost(Config.Get_CITY);
                    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 city name to arraylist
                        list.add(jsonObject.getString("city"));
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                return null;
            }

            protected void onPostExecute(Void result) {
                listCity.addAll(list);
                adapterCity.notifyDataSetChanged();
            }
        }
ArrayList listCity=新建ArrayList(); 阵列自适应能力; Spinner spn_市; spn_city=(微调器)findViewById(R.id.Spinner_位置); GetCityextends bt=新的GetCityextends(); bt.execute(); adapterCity=new ArrayAdapter(此,android.R.layout.simple\u微调器\u项,listCity); adapterCity.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项); spn_city.setAdapter(adapterCity); 私有类GetCityextends异步任务{ 数组列表; 受保护的void onPreExecute(){ super.onPreExecute(); 列表=新的ArrayList(); } 受保护的Void doInBackground(Void…参数){ InputStream=null; 字符串结果=”; 试一试{ HttpClient HttpClient=新的DefaultHttpClient(); HttpGet-HttpGet=newhttppost(Config.Get\u CITY); HttpResponse response=httpclient.execute(httppost); HttpEntity=response.getEntity(); //以字符串形式获取我们的响应。 is=entity.getContent(); }捕获(IOE异常){ e、 printStackTrace(); } //将响应转换为字符串 试一试{ BufferedReader=新的BufferedReader(新的InputStreamReader(即“utf-8”)); 字符串行=null; 而((line=reader.readLine())!=null){ 结果+=行; } is.close(); //结果=sb.toString(); }捕获(例外e){ e、 printStackTrace(); } //解析json数据 试一试{ JSONArray jArray=新JSONArray(结果); for(int i=0;i
do all in PostExecute我也在那里尝试过。我更新了我的问题citylist的大小是多少?private ArrayList citylist=new ArrayList();这是我的citylist,2 city是在for循环检查citylist.size()后进入的超过0。如果是0,请检查您的json数据不客气,请您投票或接受我的回答,谢谢!先生,完成了,但当我在spinner中更改项目时,我想调用我的asyncTask,我想显示类似选择您的城市的提示。我应该怎么做。先生,完成了,但当我在spinner中更改项目时,我想调用我的asyncTask,我想t显示提示,如选择您的城市。我应该为此做什么。先生,该操作已完成,但当我在微调器中更改项目时,我想调用我的asyncTask,并显示提示,如选择您的城市。我应该为此做什么。
        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);
    Try this one.You can get the city in spinner




   ArrayList<String> listCity = new ArrayList<>();
     ArrayAdapter<String> adapterCity;
     Spinner  spn_city;

     spn_city=(Spinner)findViewById(R.id.spinner_location);

     GetCityextends bt = new GetCityextends();
            bt.execute();


  adapterCity = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, listCity);
            adapterCity.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spn_city.setAdapter(adapterCity );


    private class GetCityextends 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();
                    HttpGet httpGet = new HttpPost(Config.Get_CITY);
                    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 city name to arraylist
                        list.add(jsonObject.getString("city"));
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                return null;
            }

            protected void onPostExecute(Void result) {
                listCity.addAll(list);
                adapterCity.notifyDataSetChanged();
            }
        }