我的问题是:我有一个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很新...
我真的很感激你能给我的任何帮助!
答案 0 :(得分: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()
我可能会被你提出的问题误导,如果这不是你想要的,那就很抱歉。