繁体   English   中英

从解析对象获取ArrayList

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM