1

我的问题是:我有一个 SoapObject。我已经成功地遍历它以找到不同的嵌套元素并将它们保存在一个对象中(我认为?)......

我的代码是这样的:

        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 还是很陌生...

我真的很感激你能给我的任何帮助!

4

1 回答 1

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()

我可能被你问的问题误导了,如果这不是你想要的,对不起。

于 2012-05-15T09:56:52.517 回答