如何使用Android中Firebase数据库中的图像填充listview?

时间:2018-11-10 14:30:22

标签: java android firebase firebase-realtime-database firebase-storage

我已将指向Firebase存储中图像的链接存储至Firebase数据库。我的数据库的JSON结构是这样的:

|
 --- users
 |
 |
    ---- uid1
 |  |
 |   -- uid1
 |  |
 |   -- name
 |  |
 |   -- imageURL
 |  |
 |
 |
  -- uid2

我想做的是用此图像填充我的列表视图。我还需要知道如何用图像填充listview。

我在堆栈溢出时阅读了一些答案,但我不明白该如何开始。

如果有人可以提供信息和一些与此相关的代码,我将不胜感激。

编辑: 我可以从数据库中获取imageURL,而我对此并不感到困惑。我想知道如何用图像填充listview?我在StackOverflow上看到了一些答案,但没有一个能够正确解决我的问题。

2 个答案:

答案 0 :(得分:1)

这可以通过从您的适配器中的Firebase或您要设置图像的任何地方获取图像URL来完成。假设您有要使用的图像列表的示例代码:

FirebaseDatabase.getInstance().getReference().child("users").addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    for(DataSnapshot ds:dataSnapshot.getChildren()){
                        String image = ds.child("image").getValue(String.class);
                        // You can now set your Image with any method you want, Glide Picasso or any other library
//                        GlideApp.with(getContext())
//                                .load(image)
//                                .placeholder(new ColorDrawable(getResources().getColor(R.color.colorWhite)))// you can use any color here
//                                .fitCenter()
//                                .into(image_view);// An ImageView instance
                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });

这里要做的事情应该是您获取要在ListView中显示的项目的地方。获取列表后,您可以将它们传递到适配器中。被评论的GlideApp调用应该在您适配器的getView方法中发生

答案 1 :(得分:0)

如果您可以使用改造从Firebase中获取图像,那么将图像填充到RecyclerView中将非常容易。如果您不知道如何进行改造,则可以按照本教程进行。 https://www.raywenderlich.com/4539-android-networking