[我在发布此帖子之前已经审查了其他类似的帖子,我的是不同的]我目前正在从Firestore数据库中检索下载网址的列表,然后尝试从Firebase存储中下载这些图像以在gridview中显示它们。
到目前为止,这是我的代码:
final Query chatRoomMsgs = db.collection("chatrooms").document(chatRoomID).collection("Messages").whereEqualTo("sentby", firebaseAuth.getUid()); chatRoomMsgs.get() .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() { @Override public void onSuccess(QuerySnapshot queryDocumentSnapshots) { ArrayList<String> sentPicsURLS = new ArrayList<String>(); for(QueryDocumentSnapshot documentSnapshot: queryDocumentSnapshots){ for(int i = 0; i < queryDocumentSnapshots.size(); i++) { sentPicsURLS.add(documentSnapshot.get("image").toString()); if(i == (queryDocumentSnapshots.size()-1)){ //now download the images and place them into the proper view for(int z = 0; z < sentPicsURLS.size(); z++){ } } } } } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { } });
这是应将图像拉入并推入gridview的位置:
for(int z = 0; z < sentPicsURLS.size(); z++){ //right here }
但是我在创建可以处理此问题的适配器时遇到了麻烦。我在活动中有一个有效的gridview,并且我的布局文件包含一个带ID的imageview。
final ArrayAdapter arrayAdapter = new ArrayAdapter(Chatroom.this, R.layout.chatroom_sent_images,R.id.sent_iv); sentPics.setAdapter(arrayAdapter); sentPics.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //empty for now } });
我缺少的部分(似乎是),我实际上在其中循环通过
sentPicsURLS
,然后将它们添加到适配器中……也许在arrayAdapter.addAll(sentPicsURLS);
for loop内有类似//right here
的东西?
现在,网格视图显示为空,甚至R.layout.chatroom_sent_images
中都没有默认图像视图。我感觉我是如此亲密,我想念什么?谢谢!
编辑
这是我的聊天室数据库结构,每个聊天室和聊天室消息的结构都相同。我在发布此文章之前已经审查了其他类似的帖子,我的情况有所不同,我目前正在从Firestore数据库中检索下载网址的列表,然后尝试从我的网站下载这些图片...
image
。因此,要解决此问题,就不需要额外的内部for循环。要创建这些图像的列表,请使用以下代码行: