所以我正在使用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());
答案 0 :(得分:1)
当您在后台即异步中查询查询方法时,它的执行在您尝试显示Toast的行之后结束。这就是当你试图获得它的第一个元素时bars
列表大小为0的原因。
在done()
方法的最后,尝试将条形列表添加到适配器并在其上调用notifyDataSetChanged()
以显示数据