使用Parse.com指针查询来自两个类的数据,指针值异常

时间:2015-06-25 02:13:33

标签: java android pointers parse-platform

我是Android开发的新手,特别是Parse.com。

我正在尝试运行一个简单的项目,其中我有两个班级(成绩)和(科目),其中每个科目都有指向某个等级的指针(使用objectId)。 if条件捕获ParseRequesException“gradePointer需要指针值”

我正在尝试在ListView中显示某个等级的主题列表。

谢谢!

代码:

 protected void onResume() {
    super.onResume();
    final ParseObject grade = getGradeByGradeName("First secondry");
    sec1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String gradeId = grade.getObjectId();

            ParseQuery<ParseObject> subjectQuery = ParseQuery.getQuery("subjects");
            subjectQuery.include("gradePointer");
            subjectQuery.whereEqualTo("gradePointer",gradeId);
            subjectQuery.findInBackground(new FindCallback<ParseObject>() {
                @Override
                public void done(List<ParseObject> list, ParseException e) {
                    if(e == null){
                        for(int i=0;i<subjectList.length;i++){
                            subjectList[i]=list.get(i).getString("name");


                        }
                        subjects.setAdapter(new ArrayAdapter<String>(MainActivity.this,R
                                .layout.item,
                                subjectList));

                    }
                    else{
                        Toast.makeText(MainActivity.this,e.toString(),Toast.LENGTH_LONG).show();
                    }
                }
            });
        }
    });

}

1 个答案:

答案 0 :(得分:0)

这很容易,因为有两件事你的方法有点不对,

  1. 这使事情变得复杂。
  2. 它会消耗两个解析请求(我们应尽量减少这些调用)
  3. 这是一种在单个请求中获取所有数据的方法,(在下面的查询中替换成绩列名称)

    <强>解释

    由于您要包含gradePointer,因此您可以在查询中直接查询该表中的字段。

     protected void onResume() {
        super.onResume();
     // final ParseObject grade = getGradeByGradeName("First secondry");
        sec1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //String gradeId = grade.getObjectId();
    
                ParseQuery<ParseObject> subjectQuery =   ParseQuery.getQuery("subjects");
                subjectQuery.include("gradePointer");
                subjectQuery.whereEqualTo("RelplaceThisWithGradeColumnName","First secondry");
                subjectQuery.findInBackground(new FindCallback<ParseObject>() {
                    @Override
                    public void done(List<ParseObject> list, ParseException e) {
                        if(e == null){
                            for(int i=0;i<subjectList.length;i++){
                                subjectList[i]=list.get(i).getString("name");
    
    
                            }
                            subjects.setAdapter(new ArrayAdapter<String>(MainActivity.this,R
                                    .layout.item,
                                    subjectList));
    
                        }
                        else{
                            Toast.makeText(MainActivity.this,e.toString(),Toast.LENGTH_LONG).show();
                        }
                    }
                });
            }
        });
    
    }
    

    希望这有帮助。