首页 > 解决方案 > 如何在适配器类中显示所有图像 URL 以及用户名、标题、uid、时间戳

问题描述

我正在尝试显示所有图像 URL 以及用户名、时间戳和标题,但只显示一张图像。我正在使用 recyclerview 适配器。我想在适配器中显示所有带有长标题、时间戳和用户名的图像 URL,就像一篇文章一样

这就是我使用博客类在firebase数据库中存储的方式

 ArrayList<Uri> arrayListImageDownloadUri = new ArrayList<>();
                            final Uri downloaduri = taskSnapshot.getDownloadUrl();
                            Log.v("DOWNLOAD URI", String.valueOf(downloaduri));
                            blogimages.add(downloaduri.toString());
                            Log.v("BLOGGIMAGES", String.valueOf(blogimages));
                           // final String path=  uri.getLastPathSegment();
                            final DatabaseReference ref =  FirebaseDatabase.getInstance().getReference().child("posts/");


                            final String newPostKey = ref.push().getKey();
                            final String posttitle = desc.getText().toString();
                            final String CurrentUser = firebaseAuth.getCurrentUser().getUid();
                            userid = FirebaseDatabase.getInstance().getReference().child("Blog").child(CurrentUser).push();
                            ArrayList<String> arrayList = new ArrayList<>();
                            for(int i=0; i<blogimages.size();i++) {

                                arrayList.add( blogimages.get(i).toString());
                                Log.v("IMAGESADDING PHSE3", String.valueOf(arrayList));
                            }
                            Log.v("COCOCOCOCO", String.valueOf(arrayList));

                                n.put(String.valueOf("img"), blogimages.get(i).toString());*/
                                Blog blog = new Blog();
                                long millis = System.currentTimeMillis();
                                int timestamp = ((int) (millis/1000))* -1;
                                blog.setTitle(posttitle);
                                blog.setUrl(arrayList);
                                blog.setUid(firebaseAuth.getCurrentUser().getUid());


                            mdatabaseReference.child(CurrentUser).setValue(blog)

                                .addOnSuccessListener(new OnSuccessListener<Void>() {
                                    @Override
                                    public void onSuccess(Void aVoid) {
                                        Intent mm = new Intent(PhotoUploadActivity.this, MainActivity.class);
                                        startActivity(mm);
                                    }
                                }).addOnFailureListener(new OnFailureListener() {
                                    @Override
                                    public void onFailure(@NonNull Exception e) {
                                        Toast.makeText(PhotoUploadActivity.this, "Failed to post the blog.. Try again later", Toast.LENGTH_LONG).show();
                                    }
                                });

标签: androidfirebasefirebase-realtime-database

解决方案


当您获取博客数据时,您可以在成功侦听器中使用它:

 rootRef.child("Blog").child("blogId").child(url).addChildEventListener(new ChildEventListener() {
                                        @Override
                                        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                urlList.add(dataSnapshot.getValue()); //you will receive single element 
    //every time in this listener you can store it in list then you can give it to your adapter out side this listener
                }
            ...

注意:您必须在 Child Changed,Removed 上实现方法...


推荐阅读