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を使用すると、新しいオブジェクトを追加しているように聞こえ、Web呼び出しで取得したオブジェクトを取得できないためです...

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 に答える