Android 从Web服务接收数据并使用AsyncTask将其绑定到微调器时出错
我试图从一个Web服务方法接收数据,该方法返回一个Android 从Web服务接收数据并使用AsyncTask将其绑定到微调器时出错,android,asp.net,web-services,ksoap2,Android,Asp.net,Web Services,Ksoap2,我试图从一个Web服务方法接收数据,该方法返回一个列表(字符串)我在ASP.NET中创建了它,如下所示 <WebMethod()> _ Public Function HelloWorld() As List(Of String) Dim names As New List(Of String) names.Add("aaa") names.Add("bbb") names.Add("ccc") Return names End Functio
列表(字符串)
我在ASP.NET中创建了它,如下所示
<WebMethod()> _
Public Function HelloWorld() As List(Of String)
Dim names As New List(Of String)
names.Add("aaa")
names.Add("bbb")
names.Add("ccc")
Return names
End Function
_
公共函数HelloWorld()作为(字符串的)列表
Dim名称作为新列表(字符串)
名称。添加(“aaa”)
名称。添加(“bbb”)
名称。添加(“ccc”)
返回名称
端函数
调用结果如下所示
<string>aaa</string>
<string>bbb</string>
<string>ccc</string>
aaa
bbb
ccc
现在我需要接收这些数据并将其放入微调器
我知道
public class MainActivity extends Activity
{
private Spinner myspinner;
private static final String METHOD_NAME = "HelloWorld";
private static final String NAMESPACE = "http://tempuri.org";
private static final String SOAP_ACTION = "http://tempuri.org/HelloWorld";
private static final String URL = "http://www.xxxxxxxxxxx.com/ws/AndroidMethods.asmx";
private String[] Values;
private void SektorDoldur()
{
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug = true;
try
{
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapObject response = (SoapObject) envelope.getResponse();
Values = new String[response.getPropertyCount()];
for(int i=0;i<response.getPropertyCount();i++)
{
Values[i] = response.getPropertyAsString(i).toString();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myspinner = (Spinner)findViewById(R.id.spinner1);
new MyTask().execute();
}
public class MyTask extends AsyncTask<Void, Void, String>
{
String response = "";
public void onPreExecute()
{
super.onPreExecute();
}
@Override
protected String doInBackground(Void... arg0)
{
SektorDoldur();
return "";
}
@Override
public void onPostExecute(String res)
{
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, Values);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
myspinner.setAdapter(adapter);
}
}
}
公共类MainActivity扩展活动
{
私人纺纱机;
私有静态最终字符串方法\u NAME=“HelloWorld”;
私有静态最终字符串命名空间=”http://tempuri.org";
私有静态最终字符串SOAP_ACTION=”http://tempuri.org/HelloWorld";
私有静态最终字符串URL=”http://www.xxxxxxxxxxx.com/ws/AndroidMethods.asmx";
私有字符串[]值;
私有无效SektorDoldur()
{
SoapObject请求=新的SoapObject(名称空间、方法名称);
SoapSerializationEnvelope=新的SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(请求);
HttpTransportSE androidHttpTransport=新的HttpTransportSE(URL);
androidHttpTransport.debug=true;
尝试
{
调用(SOAP_操作,信封);
SoapObject响应=(SoapObject)信封.getResponse();
Values=新字符串[response.getPropertyCount()];
对于(int i=0;i
构造函数ArrayAdapter(MainActivity.MyTask,int,String[])未定义
在这方面:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, Values);
添加
如何从二维数据中检索列表
Public Class NameAndvalue
Public name As String
Public value As String
End Class
我需要在微调器中显示名称,并在单击某个项目时显示值
一种方法是使用列出值
将每个名称
和值
存储在地图中,并使用SimpleAdapter在微调器中显示您的名称
字符串:
SimpleAdapter adapter = new SimpleAdapter(this, values,
android.R.layout.simple_spinner_item,
new String[] {"name"}, new int[] {android.R.id.text});
最后,在onItemSelected()
方法中,您现在可以使用值而不是名称
值。错误消息说什么?构造函数数组适配器(MainActivity.MyTask,int,String[])是UnfinedCorrect谢谢,,我还有一个问题,我如何从二维检索列表,就像这样我需要在微调器中显示名称和单击某个项目时的值。。。
Public Class NameAndvalue
Public name As String
Public value As String
End Class
SimpleAdapter adapter = new SimpleAdapter(this, values,
android.R.layout.simple_spinner_item,
new String[] {"name"}, new int[] {android.R.id.text});