从ParseQuery获取数据

时间:2015-07-26 22:36:46

标签: android parse-platform android-recyclerview recycler-adapter

所以我正在使用Parse后端开发一个新的应用程序。我正在处理的活动使用了recyclerview和cards来显示数据列表。我已经构建了适配器,视图等,并测试了它在我手动提供数据时的工作原理。但是,当我尝试从解析中检索数据时,它永远不会进入视图。例如,在下面的代码中,done方法中的所有内容都正常工作,但只要我在它之外,就会出现空白。最后的Log.d行应该打印出ArrayList中第一个对象的名称,但它永远不会。吐司使应用程序在无效索引上崩溃,因为它表示条形仍为0 ...也就是数据永远不会添加到它。我已经尝试过每一个我能想到的hack来从查询中获取数据,但它永远不会有效。有什么想法吗?

       ArrayList<Bar> bars = new ArrayList<Bar>();    
        ParseQuery<BarObj> query = ParseQuery.getQuery("BarInfo");
                    query.findInBackground(new FindCallback<BarObj>() {
                        @Override
                        public void done(List<BarObj> Barlist, ParseException e) {
                            if(e == null){
                                for(int i=0; i<Barlist.size(); i++){
                                    String name = Barlist.get(i).getName();
                                    Double gender = Barlist.get(i).getGender();
                                    Integer cover = Barlist.get(i).getCover();
                                    Double line = Barlist.get(i).getLine();
                                    Double capacity = Barlist.get(i).getCapacity();
                                    Bar bar = new Bar(name, gender, cover, line, capacity);
                                    bars.add(bar);
                                }
                            }
                            else
                                Log.d("bar", "Error: " + e.getMessage());
                        }
                    });
       Toast.makeText(this,bars.get(0).getName(),Toast.LENGTH_LONG).show();
       Log.d("bars", "First bar is " + bars.get(0).getName());

1 个答案:

答案 0 :(得分:1)

当您在后台即异步中查询查询方法时,它的执行在您尝试显示Toast的行之后结束。这就是当你试图获得它的第一个元素时bars列表大小为0的原因。

done()方法的最后,尝试将条形列表添加到适配器并在其上调用notifyDataSetChanged()以显示数据