Spinner未显示Android
我使用spinner来显示来自json的数据,但它在屏幕上什么也没有显示。我正在使用first time,因此我想分享我为spinner所做的工作。我的代码是: 在XML中: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
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();
}
}