2012-05-01 80 views
1

我的问题是这样的:我有一个SoapObject。我已经成功地通过它迭代找到不同的嵌套元素和对象(我想?)救了他们...解析对象数组的kSoap响应

我的代码是这样的:

 if(sResult != null) 
     { 
      SoapObject soapresults = (SoapObject)sResult.getProperty(0); 

      int count = soapresults.getPropertyCount(); 

      ChildStatus[] children = new ChildStatus[count]; 

      for (int i = 0; i < count; i++) 
      { 
       SoapObject kid = (SoapObject)soapresults.getProperty(i); 
       ChildStatus childStatus = new ChildStatus(); 
       SoapObject value = (SoapObject)kid.getProperty("Value"); 
       SoapObject info = (SoapObject)value.getProperty("Info"); 

       childStatus.CheckOutPlanned = value.getPropertyAsString("CheckOutPlannedTime"); 
       childStatus.CurrentStatus = value.getPropertyAsString("CurrentStatus"); 
       childStatus.FullName = info.getPropertyAsString("FullName"); 
       childStatus.ID = info.getPropertyAsString("Id"); 
       childStatus.KindergardenID = info.getPropertyAsString("KindergardenId"); 
       childStatus.URL = info.getPropertyAsString("ThumbnailUrl"); 

       String pickUpBy = value.getPropertyAsString("PickUpBy"); 


       if(pickUpBy.equalsIgnoreCase("anyType{}")) 
       { 
        System.out.println("Ja"); 
        pickUpBy = "none"; 
       } else if(pickUpBy.equalsIgnoreCase("En anden forælder")) 
       { 
        childStatus.PickUpWithKidID = value.getPropertyAsString("PickUpWithKidId"); 
        childStatus.PickUpWithKidName = value.getPropertyAsString("PickUpWithKidName"); 
       } 

       childStatus.PickUpBy = value.getPropertyAsString("PickUpBy"); 

       children[i] = childStatus; 
      } 

      System.out.println("Size: " + children.length); 

,我的目标是:

public class ChildStatus implements KvmSerializable 
{ 
    public String CheckOutPlanned; 
    public String CurrentStatus; 
    public String FullName; 
    public String ID; 
    public String KindergardenID; 
    public String URL; 
    public String PickUpBy; 
    public String PickUpWithKidID; 
    public String PickUpWithKidName; 

    public ChildStatus(){} 

    public ChildStatus(String checkOutPlanned, String currentStatus, String fullName, String id, String kindergardenID, String url, String pickUpBy, String pickUpWithKidID, String pickUpWithKidName) 
    { 
     CheckOutPlanned = checkOutPlanned; 
     CurrentStatus = currentStatus; 
     FullName = fullName; 
     ID = id; 
     KindergardenID = kindergardenID; 
     URL = url; 
     PickUpBy = pickUpBy; 
     PickUpWithKidID = pickUpWithKidID; 
     PickUpWithKidName = pickUpWithKidName; 
    } 

    public Object getProperty(int arg0) { 
     // TODO Auto-generated method stub 
     switch(arg0) 
     { 
     case 0: 
      return CheckOutPlanned; 
     case 1: 
      return CurrentStatus; 
     case 2: 
      return FullName; 
     case 3: 
      return ID; 
     case 4: 
      return KindergardenID; 
     case 5: 
      return URL; 
     case 6: 
      return PickUpBy; 
     case 7: 
      return PickUpWithKidID; 
     case 8: 
      return PickUpWithKidName; 
     } 

     return null; 
    } 

    public int getPropertyCount() { 
     // TODO Auto-generated method stub 
     return 9; 
    } 

    public void getPropertyInfo(int index, Hashtable arg1, PropertyInfo info) { 
     // TODO Auto-generated method stub 
     switch(index) 
     { 
     case 0: 
      info.type = PropertyInfo.STRING_CLASS; 
      info.name = "CheckOutPlanned"; 
      break; 
     case 1: 
      info.type = PropertyInfo.STRING_CLASS; 
      info.name = "CurrentStatus"; 
      break; 
     case 2: 
      info.type = PropertyInfo.STRING_CLASS; 
      info.name = "FullName"; 
      break; 
     case 3: 
      info.type = PropertyInfo.STRING_CLASS; 
      info.name = "ID"; 
      break; 
     case 4: 
      info.type = PropertyInfo.STRING_CLASS; 
      info.name = "KindergardenID"; 
      break; 
     case 5: 
      info.type = PropertyInfo.STRING_CLASS; 
      info.name = "URL"; 
      break; 
     case 6: 
      info.type = PropertyInfo.STRING_CLASS; 
      info.name = "PickUpBy"; 
      break; 
     case 7: 
      info.type = PropertyInfo.STRING_CLASS; 
      info.name = "PickUpWithKidID"; 
      break; 
     case 8: 
      info.type = PropertyInfo.STRING_CLASS; 
      info.name = "PickUpWithKidName"; 
      break; 
     default: 
      break; 
     } 
    } 

    public void setProperty(int index, Object value) { 
     // TODO Auto-generated method stub 
     switch(index) 
     { 
     case 0: 
      CheckOutPlanned = value.toString(); 
      break; 
     case 1: 
      CurrentStatus = value.toString(); 
      break; 
     case 2: 
      FullName = value.toString(); 
      break; 
     case 3: 
      ID = value.toString(); 
      break; 
     case 4: 
      KindergardenID = value.toString(); 
      break; 
     case 5: 
      URL = value.toString(); 
      break; 
     case 6: 
      PickUpBy = value.toString(); 
      break; 
     case 7: 
      PickUpWithKidID = value.toString(); 
      break; 
     case 8: 
      PickUpWithKidName = value.toString(); 
      break; 
     default: 
      break; 
     } 
    } 

} 

现在我该如何使用类中的对象数组?

我看到的地方,我需要做这样的事情:

ArrayList<MyClass> myList = new ArrayList<MyClass>(); 

myList.add(new MyClass()); 

myList.get(0).myMethodFromMyClass(); 

所以在我的情况:

ArrayList<ChildStatus> myChild = new ArrayList<ChildStatus>(); 
myChild.add(new ChildStatus()); 
myChild.get(0).?? 

但我想我可能会在一些错误的方向离开这里,因为与.add它听起来像我添加一个新的对象,并没有得到那些我在我的网络调用检索...

在iOS我通常使用:

Status *theStatus = [statusConnection.statusArray objectAtIndex:i]; 

从对象的数组中获取一个对象,但我相当新的到Android ...

我真的很感激任何帮助,您可以给我!

+0

参考链接[http://stackoverflow.com/questions/19198017/pass-arraylist-data-into-soap-web-service-in-android](http://stackoverflow.com/questions/19198017/pass-arraylist-数据进入肥皂web服务在android)任何想法如何可以将数组数据传递给android中的SOAP服务? –

回答

0

我有点难以理解你真正想做什么。

// Get rid of the table 
REMOVE ChildStatus[] children = new ChildStatus[count]; 

// Create the ArrayList 
ArrayList<ChildStatus> myChild = new ArrayList<ChildStatus>(); 

for (int i = 0; i < count; i++) 
{ 
    ChildStatus childStatus = new ChildStatus(); 

    ... 
    HERE YOU POPULATE YOUR childStatus OBJECT WITH THE SOAPOBJECT 
    ... 

    // Add objects built from SOAPObject to the ArrayList 
    myChild.add(childStatus); 

    // The table is of no matter here 
    REMOVE children[i] = childStatus; 
} 

// Use inner methods from an element of the ArrayList (here the number of properties for the first element) 
myChild.get(0).getPropertyCount() 

我可能已经通过的误导你问这个问题,对不起,如果这不是你所期待的。

+0

啊,是的,我在当天晚些时候找到了解决方案,这与您在此建议的内容类似... :)但是,尽管如此... – user1368800