Android Parse查询返回空列表

时间:2015-09-24 15:30:10

标签: android parse-platform empty-list

我有一个名为" classA"的解析类。我想构建一个查询,我想在" classA"中搜索行。拥有某些" objectId"。我写了以下代码。但它总是返回一个ParseObjects的空列表。我已尝试在" classA"中存在单独的列。一直有空列表返回。请帮忙。

我之前在另一个班级" classB"在同一个应用程序内部并且完美运行。我也试过了,#34;试试"使用" query.find"阻止实现。那也返回空列表。提前致谢。请解释一下是什么错误。

需要更多代码段,请告知我们。

    Button btn = (Button) findViewById(R.id.query_btn);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            EditText objIdET= (EditText) findViewById(R.id.obj_id);
            String objId= objIdET.getText().toString();
            Log.d("check", objId); // Prints correct value here..

            ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("classA");
            fridgeID.whereEqualTo("objectId", objId);
            List<ParseObject> lp = new ArrayList<ParseObject>();
            query.findInBackground(new FindCallback<ParseObject>() {
                @Override
                public void done(List<ParseObject> objects, ParseException e) {
                    Log.d("#results", String.valueOf(objects.size()));
                }
            });

            }
        }
    });

5 个答案:

答案 0 :(得分:1)

FridgeId替换为query

ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("classA");
            query.whereEqualTo("objectId", objId);
            List<ParseObject> lp = new ArrayList<ParseObject>();
            query.findInBackground(new FindCallback<ParseObject>() {
                @Override
                public void done(List<ParseObject> objects, ParseException e) {
                    Log.d("#results", String.valueOf(objects.size()));
                }
            });

答案 1 :(得分:0)

如果您拥有该行的objectId,请使用getInBackground()

ParseQuery<ParseObject> query = ParseQuery.getQuery("classA");
query.getInBackground(objId, new GetCallback<ParseObject>() {
 public void done(ParseObject object, ParseException e) {
     if (e == null) {
         Log.d("#results", String.valueOf(objects.size()));
     } else {
         // Handle the error
     }
 }
}

如果您没有objectId并设置某些条件,请致电findInBackground()。您也可以像这样在objectId字段上设置条件。

ParseQuery<ParseObject> query = ParseQuery.getQuery("classA");
query.whereEqualTo("objectId", objId);
query.findInBackground(new FindCallback<ParseObject>() {
 public void done(List<ParseObject> objects, ParseException e) {
     if (e == null) {
         Log.d("#results", String.valueOf(objects.size()));
     } else {
         // Handle the error
     }
 }
}

答案 2 :(得分:0)

您将获得一个Parse对象的空列表,因为没有与该用户对应的任何行(您已登录)。

Parse.com使用名为ACL的字段实现其数据的隐私。因此,如果用户A向表中添加条目,则默认情况下,ACL将设置为用户A的读取+写入,而其他用户则不设置。因此用户B将无法找到userA的任何对象。

阅读更多内容:https://parse.com/docs/android/guide#security

如果要创建一种机制,只有属于某个组的用户才能读取+写入彼此的对象,您可以使用角色(解析功能)。

https://parse.com/docs/android/guide#roles

答案 3 :(得分:0)

在应用程序中初始化解析时,检查是否设置了正确的密钥。

答案 4 :(得分:0)

如果您想获取用户列表,但 ParseQuery.getQuery 不起作用 - 试试这个:

val query: ParseQuery<ParseUser> = ParseUser.getQuery()
    query.findInBackground() {...}