如何使用 firebase 和 Picasso 库更新用户个人资料图片

how to update user profile image using firebase and Picasso library

我正在尝试在我的应用程序的 Firebase 实时数据库中更新用户个人资料图像,但我无法获得当前用户的引用,因为我在另一个 activity 中声明了它。

我的代码和数据库结构如下:

profile image

在当前图片和代码中,我正在手动编写子节点(gli)的id,因为它是firebase中当前用户的user_name,请帮助我如何才能我给它一条编码路径。

代码:

private void profileImage(){

        pImageRef = FirebaseDatabase.getInstance().getReference("doctors/doctors_registration/gli/pimage"); 

        pImageRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                String  imageurl=  String.valueOf(dataSnapshot.getValue()) ;
                Toast.makeText(HomeActivity.this, "link:"+imageurl, Toast.LENGTH_SHORT).show();
                Picasso.get()
                        .load(imageurl)
                        .into(profileimg);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

    }

请看数据库结构的截图,帮助我如何获取当前用户的个人资料图片?

首先,停止忽略错误。至少,请在 onCancelled 方法中添加:

Log.d(TAG, error.getMessage());

另请注意,Picasso 是一个可以帮助您下​​载图像并且不会在实时数据库中更新图像的库。如果要在现有位置更新图像,请记住无需先读取图像。要解决此问题,请使用以下代码行:

pImageRef.updateChildren("yourNewUrl");

你也可以在这种情况下使用addOnCompleteListener()看看是否有问题。

如果您需要在读取图像后立即更新图像,则在 onDataChange() 方法中,使用以下代码行:

dataSnapshot.getRef().updateChildren("yourNewUrl");