Java 如何在android中使用异步任务从webservice加载后在spinner中填充数据
我想在states数组来自webService之后,在android spinner中填充数据。加载“进度”对话框后,它将在微调器中显示数据Java 如何在android中使用异步任务从webservice加载后在spinner中填充数据,java,android,web-services,android-asynctask,android-spinner,Java,Android,Web Services,Android Asynctask,Android Spinner,我想在states数组来自webService之后,在android spinner中填充数据。加载“进度”对话框后,它将在微调器中显示数据 import android.app.ProgressDialog; import android.os.AsyncTask; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGro
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
public class SpinnerExample extends Fragment {
private static ProgressDialog pleaseWaitDialog;
private static ProgressDialog pDialog;
private View rootView;
private Spinner state_spinner;
private String[] statesArray;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.spinner, container, false);
state_spinner = (Spinner) rootView.findViewById(R.id.state_spinner);
SoapAccessTask soapAccessTask = new SoapAccessTask();
soapAccessTask.execute();
return rootView;
}
private class SoapAccessTask extends AsyncTask<String, Void, String> {
// Pre execution actions
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("Loading State List");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected String doInBackground(String... arg0) {
statesArray = WebService.getStateList();
return statesArray;
}
@Override
protected void onPostExecute(String result) {
if (statesArray != null) {
ArrayAdapter<String> stateAdapter = new ArrayAdapter<String>(getActivity(), R.layout.spinner_item, statesArray);
stateAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
state_spinner.setAdapter(stateAdapter);
pleaseWaitDialog.dismiss();
} else {
AlertDialogError.showMessage(getActivity(), "Server Error");
}
}
}
}
下面是我的代码。我在做背景法时出错了。我得到了正确的Web服务响应。但我不会在微调器中显示数据
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
public class SpinnerExample extends Fragment {
private static ProgressDialog pleaseWaitDialog;
private static ProgressDialog pDialog;
private View rootView;
private Spinner state_spinner;
private String[] statesArray;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.spinner, container, false);
state_spinner = (Spinner) rootView.findViewById(R.id.state_spinner);
SoapAccessTask soapAccessTask = new SoapAccessTask();
soapAccessTask.execute();
return rootView;
}
private class SoapAccessTask extends AsyncTask<String, Void, String> {
// Pre execution actions
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("Loading State List");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected String doInBackground(String... arg0) {
statesArray = WebService.getStateList();
return statesArray;
}
@Override
protected void onPostExecute(String result) {
if (statesArray != null) {
ArrayAdapter<String> stateAdapter = new ArrayAdapter<String>(getActivity(), R.layout.spinner_item, statesArray);
stateAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
state_spinner.setAdapter(stateAdapter);
pleaseWaitDialog.dismiss();
} else {
AlertDialogError.showMessage(getActivity(), "Server Error");
}
}
}
}
导入android.app.ProgressDialog;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.Spinner;
公共类SpinnerExample扩展了片段{
私有静态进程对话框pleaseWaitDialog;
专用静态进程对话框;
私有视图rootView;
私有微调器状态_微调器;
私有字符串[]statesArray;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
rootView=充气机。充气(R.layout.spinner,容器,false);
state\u微调器=(微调器)rootView.findviewbyd(R.id.state\u微调器);
SoapAccessTask SoapAccessTask=新的SoapAccessTask();
soapAccessTask.execute();
返回rootView;
}
私有类SoapAccessTask扩展了AsyncTask{
//执行前行动
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
pDialog=newprogressdialog(getActivity());
pDialog.setMessage(“加载状态列表”);
pDialog.setUndeterminate(假);
pDialog.setCancelable(真);
pDialog.show();
}
@凌驾
受保护的字符串doInBackground(字符串…arg0){
statesArray=WebService.getStateList();
返回状态数组;
}
@凌驾
受保护的void onPostExecute(字符串结果){
if(statesArray!=null){
ArrayAdapter stateAdapter=新的ArrayAdapter(getActivity(),R.layout.spinner_项,statesArray);
状态适配器
.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
state_spinner.setAdapter(stateAdapter);
请查看对话框。解除();
}否则{
显示消息(getActivity(),“服务器错误”);
}
}
}
}
什么是WebService
?你得到了什么错误?什么是getStateList()
返回的?Weservice是一个类,其中我解析JSON数据,getStateList()是方法,它将返回状态数组。加载进度对话框后出现错误,它将使应用程序崩溃。