使用微调器的选定项

时间:2014-10-01 22:08:50

标签: android web-services android-studio android-spinner

我有点困惑,需要一些关于如何使用从微调器中选择的信息的想法。 首先,通过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 ....它们具有随机值......

1 个答案:

答案 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);