2013-01-04 63 views
0

我必須使用web服務數據(XML解析)來填充微調器。它包含兩個屬性,如「ID」和「名稱」。 代碼如下:從android中的web服務數據填充微調器

try { 

      ArrayList<String> listdata = new ArrayList<String>(); 

      URL url = new URL(
        "http://10.0.2.2/WebService/Service.asmx/GetService"); 

       DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
       DocumentBuilder db = dbf.newDocumentBuilder(); 
       Document doc = db.parse(new InputSource(url.openStream())); 
       doc.getDocumentElement().normalize(); 

       NodeList nodeList = doc.getElementsByTagName("Table"); 




        for (int i = 0; i < nodeList.getLength(); i++) { 

         Node node = nodeList.item(i); 



         Element providerID = (Element) node; 
         NodeList providerIDlist = providerID.getElementsByTagName("id"); 
         Element providerIDelement = (Element) providerIDlist.item(0); 
         providerIDlist = providerIDelement.getChildNodes(); 

         MProviderIDL = providerIDlist.item(0).getNodeValue(); 
         //mprovider.put("MproviderID", MProviderIDL.toString()); 
         listdata.add(MProviderIDL); 


Element providerName = (Element) node; 
         NodeList providerNamelist = providerName.getElementsByTagName("value"); 
         Element prividerNameElement = (Element) providerNamelist.item(0); 
         providerNamelist = prividerNameElement.getChildNodes(); 
         //AddImg[i].setTag(((Node) AdvImglist.item(0)).getNodeValue()); 
         MProviderNameL = providerNamelist.item(0).getNodeValue(); 
         //mprovider.put("MproviderName", MProviderNameL.toString()); 
         listdata.add(MProviderNameL); 





         } 

        Spinner spinMProvider=(Spinner)findViewById(R.id.spinMProvider); 

        ArrayAdapter <String> adapter = new ArrayAdapter <String> (this, 
          android.R.layout.simple_list_item_1,listdata); 
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
        spinMobileProvider.setAdapter(adapter); 


     } 

     catch (MalformedURLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (ParserConfigurationException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (SAXException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

發送值數據基地。

private void Send(View v,String Url) { 

     HttpPost postMethod=new HttpPost(Url); 
     List<NameValuePair> regParams=new ArrayList<NameValuePair>(); 
     DefaultHttpClient hc=new DefaultHttpClient(); 



     regParams.add(new BasicNameValuePair("_fname",edtFname.getText().toString())); 


     regParams.add(new BasicNameValuePair("_lname",edtLname.getText().toString())); 


     regParams.add(new BasicNameValuePair("_email",edtEmail.getText().toString())); 


     regParams.add(new BasicNameValuePair("_password",edtPassword.getText().toString())); 


     regParams.add(new BasicNameValuePair("_address",edtAddress.getText().toString())); 


     regParams.add(new BasicNameValuePair("Provider", Integer.toString(spinMProvider.getSelectedItemPosition()))); 

我的XML數據...

<Table diffgr:id="Table4" msdata:rowOrder="3"> 
<id>11</id> 
<value>Cellular South</value> 
</Table> 
<Table diffgr:id="Table5" msdata:rowOrder="4"> 
<id>10</id> 
<value>Cricket</value> 
</Table> 
<Table diffgr:id="Table6" msdata:rowOrder="5"> 
<id>4</id> 
<value>Sprint NexTel</value> 
</Table> 

與輸出像this .....

我必須在微調列表中顯示名稱並將特定的ID傳遞給數據庫。如何讓ID到文本的後端?

+0

首先從webservice獲取數據並將其保存到數據庫中,並使用像列和值這樣的兩個列...將值作爲列表從數據庫中單獨獲取並與Spinner綁定 – itsrajesh4uguys

回答

0

把ID和微調值在數組列表作爲一組對象的讓說

Class spinnerObj { 

String id; 
String spinnervalue; 
} 

Arraylist<spinnerObj> sp = new Arraylist<spinnerObj>(): 

現在居住與此ArrayList sppinnervalue值的微調;

在你的onValueChange方法的微調你會得到的位置,這將是你已經添加的順序,你可以做的是然後調用sp.get(position).getID()你將得到的ID你已經與微調值相關聯。