我有点困惑,需要一些关于如何使用从微调器中选择的信息的想法。 首先,通过Web服务,通过Asynctask上的代码填充微调器:
@Override
protected Void doInBackground(Void... unused) {
...
...
...
HttpTransportSE transportSE = new HttpTransportSE(URL);
try{
//Web service call
transportSE.call(SOAP_ACTION_BRING_NEEDS, envelope);
//create SoapPrimitive and obtain response
resultsRequestSOAP = (SoapObject)envelope.getResponse();
int intPropertyCount = resultsRequestSOAP.getPropertyCount();
strNeeds = new String[intPropertyCount];
for(int i= 0;i< intPropertyCount; i++)
{
//Format the information from the web service
Object property = resultsRequestSOAP.getProperty(i);
if (property instanceof SoapObject) {
SoapObject needsList = (SoapObject) property;
strNeeds[i] = needsList.getProperty("Descripcion").toString();
}
}
然后在postExecute上我填充微调器调用方法spinnerNeeds():
public void spinnerNeeds() {
//Needs Spinner Control
spnNeeds = (Spinner)findViewById(R.id.spnNeeds);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, strNeeds);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spnNeeds.setAdapter(adapter);
spnNeeds.setSelection(1);
spnNeeds.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//Todo
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
事实是,微调器由strNeeds []和属性(“Descripcion”)填充,但Web服务响应有3个属性,我需要另一个属性调用“Codigo”,以便可以将信息发送到另一项活动。如何在微调器上选择一个用我需要的“codigo”验证的选项后验证?
我正在考虑创建另一个String [] strCode并将属性“Codigo”值保存在FOR()中,就像我使用“Descripcion”属性一样...但是如果我在微调器上选择一个选项我怎么能验证strCode ??
PD:“Codigo”属性不包含优势值,例如第一个值不是1,2,3,4 ....它们具有随机值......
答案 0 :(得分:0)
答案非常复杂,但一旦你理解它就很简单。 首先,你需要创建一个对象说,需要3个属性(描述,Codigo ..) 接下来,使用NEED类型的arrayadapter,而不是使用String类型的arrayadapter。 接下来,在自定义类NEED中,重写toString()方法,使其返回需要在微调器中显示的属性的值。 现在,所选项目将返回NEED对象,从中您可以获得“Codigo”的值。属性。
class Need{
String description, codigo, property3;
public Need(String desc, String codigo, String prop3)
{
this.description = desc;//similarly for other 2 properties
}
@override
private String toString()
{
return this.description;
}
}
strNeeds = new Need[intPropertyCount];
for(){
strNeeds[i] = new Need();
}
ArrayAdapter<Need> adapter = new ArrayAdapter<Need>(this,android.R.layout.simple_list_item_1, strNeeds);