将图像保存到我的应用程序(进入片段)中,从firebase数据库中的特定用户

时间:2017-11-20 19:29:34

标签: android android-fragments firebase-realtime-database

我是Android Firebase的新手。我正在尝试将我的Firebase数据库中的图像保存到我的Android应用程序中片段

更具体地说,我想搜索当前登录的用户的Id。在找到Id之后,我想获取图像字段的内容(图像是用户的孩子)并保存在我的应用程序的imageview上。

我的主要目的是为用户创建个人资料图片。

这是我的Firebase数据库:

{
  "Users" : {
    "Tc2N9FA0uhTFZuMRNkRSHgiaGQ22" : {
      "imageurl" : "https://firebasestorage.googleapis.com...
      "userid" : "Tc2N9FA0uhTFZuMRNkRSHgiaGQ22"
    }
  }
}

我在应用程序中的代码是(我只显示了我试图保存图像的部分):

public class Tab1MyProfile extends Fragment  {

ImageView userImageProfileView;


    @Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.tab1_my_profile, container, false);

    userImageProfileView = (ImageView) rootView.findViewById(R.id.profile_pic);

    mAuth = FirebaseAuth.getInstance();

    DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference();
    mDatabase.child("Users").child(FirebaseAuth.getInstance().getCurrentUser().getUid()).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists())
            {
                for(DataSnapshot userDetails : dataSnapshot.getChildren()) {

                    userImageProfileView = userDetails.child("Name").getValue());
                }
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

    return rootView;
}


}

这是我的错误:

userImageProfileView = userDetails.child("Name").getValue());

错误是:
不兼容的类型:
必需:找到android.widget.ImageView:java.lang.Object

1 个答案:

答案 0 :(得分:0)

假设Users节点是Firebase数据库的直接子节点,要从特定用户获取这些值,请使用以下代码:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference userIdRef = rootRef.child("Users").child(uid);
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String imageurl = dataSnapshot.child("imageurl").getValue(String.class);
        String userid = dataSnapshot.child("userid").getValue(String.class);
        Log.d("TAG", imageurl + " / " + userid);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
userIdRef.addListenerForSingleValueEvent(eventListener);

您的输出将是:

https://firebasestorage.googleapis.com... / Tc2N9FA0uhTFZuMRNkRSHgiaGQ22