[英]get ArrayList from Parse Object
我有一个解析对象,该对象的值包含用户ID的ArrayList。 我在弄清楚如何检索整个ArrayList(不仅是列表中的1个值)时遇到了麻烦,但是我的代码看起来像这样。.但是总是伴随着错误(Array返回空):
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Food");
query.whereEqualTo("objectId", parseId);
query.getFirstInBackground(new GetCallback<ParseObject>() {
@Override
public void done(ParseObject parseObject, ParseException e) {
if (e == null) {
ArrayList<String> list = (ArrayList<String>)
parseObject.get("userList");// This is where I don't know what to use to get the Array
}
else {
AlertDialog.Builder builder = new AlertDialog.Builder(ThisActivity.this);
builder.setTitle(R.string.error_title)
.setMessage("error")
.setPositiveButton("ok", null);
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
我只想加载用户ID的数组(来自对象),并在此活动中的其他地方使用该数组。 对象中的所有其他值都是String值,并且可以使用.getString很好地加载。
我知道我可能还有一段路要走,所以任何帮助都将不胜感激。
//Try This To Retrieve All Records In Server using findInBackground()
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Food");
query.whereEqualTo("objectId", parseId);
query.findInBackground(new GetCallback<ParseObject>() {
@Override
public void done(List<ParseObject> parseObject, ParseException e) {
if (e == null) {
for (int i = 0; i<parseObject.size(); i++){
ParseObject stObj = parseObject.get(i);
List<String>list = stObj.getList("userList");
//Transfer list content to array stockArr
String[] stockArr = new String[list.size()];
stockArr = list.toArray(stockArr);
//list contains userlist - To add to list without transferring content to array use next line of code below
list.add("Add This To The List");
//To save updated list use next two lines of code below
stObj.put("userList", list);
stObj.saveInBackground();
}
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(ThisActivity.this);
builder.setTitle(R.string.error_title)
.setMessage("error")
.setPositiveButton("ok", null);
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
//Try This To Retrieve ONLY First Record In Server using getFirstInBackground()
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Food");
query.whereEqualTo("objectId", parseId);
query.getFirstInBackground(new GetCallback<ParseObject>() {
@Override
public void done(List<ParseObject> parseObject, ParseException e) {
if (e == null) {
ParseObject stObj = parseObject.get(0);
List<String>list = stObj.getList("userList");
//Transfer list content to array stockArr
String[] stockArr = new String[list.size()];
stockArr = list.toArray(stockArr);
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(ThisActivity.this);
builder.setTitle(R.string.error_title)
.setMessage("error")
.setPositiveButton("ok", null);
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
您应该替换此行:
parseObject.get("userList");// This is where I don't know what to use to get the Array
至:
JSONArray array = parseObject.getJSONArray("userList");
并且它将正常工作。
我认为您不必使用getFirstInBackground
(仅检索一个元素),而必须使用findInBackground
(检索所有对象)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.