我有一个Post类的ArrayList,其中包含用户发布的所有帖子。 post类具有一个成员变量,该成员变量包含FireBase存储内到该帖子图像的路径。我试图遍历列表,使用该路径获取每个帖子的下载URL,然后使用适配器将图像添加到gridview。但是,并非所有URL都被抓取。在我的个人资料上对其进行测试时,个人资料页面仅显示4条帖子,而我实际发了7条。这是有问题的代码:
for (Post p : post_list)
{
//Log.d("notebook", "loop");
storage.child(p.getPath()).getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
urls.add(uri.toString());
GridAdapter gridAdapter = new GridAdapter(getActivity(), urls);
gridView.setAdapter(gridAdapter);
}
});
}
该循环确实执行了7次循环,但是侦听器仅被调用4次。
答案 0 :(得分:0)
尝试检查适配器设置代码中的计数器,以便在像这样检索到所有网址后设置gridview。
final int[] count = {1};
for (Post p : post_list)
{
//Log.d("notebook", "loop");
storage.child(p.getPath()).getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
urls.add(uri.toString());
count[0]++;
if(count[0] == post_list.size()) {
GridAdapter gridAdapter = new GridAdapter(getActivity(), urls);
gridView.setAdapter(gridAdapter);
}
}
});
}