Implement Retrieve Profile Data Functionality in Social Media Android App

This is the Part 4 of “Build a Social Media App on Android Studio” tutorial, and we are going to cover the following functionalities in this article:
- We are going to retrieve data of users From Firebase.
 - This is a simple fragment in which we will retrieve data of users like name, email, and profile pic from real-time Database and showing that in text layout and image layout.
 - In the future, we are also going to show the blogs of users on the profile page.
 
Step By Step Implementation
Step 1: Working with the fragment_profile.xml file
On this page will be the retrieving email, name, and profile picture of the user. And also we have added the Material Floating Action Button to update the data. Navigate to the app > res > layout > fragment_profile.xml and add the below code to that file. Below is the code for the fragment_profile.xml file.
XML
<?xml version="1.0" encoding="utf-8"?><RelativeLayout    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#F1EDED"    tools:context=".ProfileFragment">    <ScrollView        android:layout_width="match_parent"        android:layout_height="wrap_content">        <RelativeLayout            android:layout_width="match_parent"            android:layout_height="wrap_content">            <ImageView                android:id="@+id/cavertv"                android:layout_width="match_parent"                android:layout_height="180dp"                android:background="@color/colorPrimaryDark"                android:scaleType="fitXY">            </ImageView>            <LinearLayout                android:id="@+id/linearLayout"                android:layout_width="match_parent"                android:layout_height="120dp"                android:layout_marginTop="100dp"                android:orientation="horizontal">                <ImageView                    android:id="@+id/avatartv"                    android:layout_width="120dp"                    android:layout_height="120dp"                    android:layout_gravity="center_horizontal"                    android:layout_marginStart="20dp"                    android:background="@color/colorPrimary"                    android:padding="5dp"                    android:src="@drawable/ic_images" />                <LinearLayout                    android:layout_width="match_parent"                    android:layout_height="wrap_content"                    android:background="#77000000"                    android:orientation="vertical">                    <TextView                        android:id="@+id/nametv"                        android:layout_width="match_parent"                        android:layout_height="wrap_content"                        android:layout_marginStart="5dp"                        android:layout_marginLeft="5dp"                        android:layout_marginTop="5dp"                        android:textColor="@color/colorWhite"                        android:textSize="25sp" />                    <TextView                        android:id="@+id/emailtv"                        android:layout_width="match_parent"                        android:layout_height="wrap_content"                        android:layout_marginStart="5dp"                        android:layout_marginLeft="5dp"                        android:textColor="@color/colorWhite" />                </LinearLayout>                             </LinearLayout>        </RelativeLayout>             </ScrollView>    <com.google.android.material.floatingactionbutton.FloatingActionButton        android:id="@+id/fab"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentEnd="true"        android:layout_alignParentRight="true"        android:layout_alignParentBottom="true"        android:layout_margin="10dp"        android:src="@drawable/ic_edit_white" /></RelativeLayout> | 
Step 2: Working with the ProfileFragment.java file
Go to the ProfileFragment.java file and refer to the following code. Below is the code for the ProfileFragment.java file. Comments are added inside the code to understand the code in more detail.
Java
package com.example.socialmediaapp;import android.app.ProgressDialog;import android.content.Intent;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import androidx.annotation.NonNull;import androidx.annotation.Nullable;import androidx.fragment.app.Fragment;import androidx.recyclerview.widget.RecyclerView;import com.bumptech.glide.Glide;import com.google.android.material.floatingactionbutton.FloatingActionButton;import com.google.firebase.auth.FirebaseAuth;import com.google.firebase.auth.FirebaseUser;import com.google.firebase.database.DataSnapshot;import com.google.firebase.database.DatabaseError;import com.google.firebase.database.DatabaseReference;import com.google.firebase.database.FirebaseDatabase;import com.google.firebase.database.Query;import com.google.firebase.database.ValueEventListener;/** * A simple {@link Fragment} subclass. */public class ProfileFragment extends Fragment {    private FirebaseAuth firebaseAuth;    FirebaseUser firebaseUser;    FirebaseDatabase firebaseDatabase;    DatabaseReference databaseReference;    ImageView avatartv;    TextView name, email;    RecyclerView postrecycle;    FloatingActionButton fab;    ProgressDialog pd;    public ProfileFragment() {        // Required empty public constructor    }    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        // Inflate the layout for this fragment        // creating a  view to inflate the layout        View view = inflater.inflate(R.layout.fragment_profile, container, false);        firebaseAuth = FirebaseAuth.getInstance();                 // getting current user data        firebaseUser = firebaseAuth.getCurrentUser();        firebaseDatabase = FirebaseDatabase.getInstance();        databaseReference = firebaseDatabase.getReference("Users");                 // Initialising the text view and imageview        avatartv = view.findViewById(R.id.avatartv);        name = view.findViewById(R.id.nametv);        email = view.findViewById(R.id.emailtv);        fab = view.findViewById(R.id.fab);        pd = new ProgressDialog(getActivity());        pd.setCanceledOnTouchOutside(false);        Query query = databaseReference.orderByChild("email").equalTo(firebaseUser.getEmail());                 query.addValueEventListener(new ValueEventListener() {            @Override            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {                for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {                    // Retrieving Data from firebase                    String name = "" + dataSnapshot1.child("name").getValue();                    String emaill = "" + dataSnapshot1.child("email").getValue();                    String image = "" + dataSnapshot1.child("image").getValue();                    // setting data to our text view                    nam.setText(name);                    email.setText(emaill);                    try {                        Glide.with(getActivity()).load(image).into(avatartv);                    } catch (Exception e) {                    }                }            }            @Override            public void onCancelled(@NonNull DatabaseError databaseError) {            }        });                 // On click we will open EditProfileActiity        fab.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                startActivity(new Intent(getActivity(), EditProfilePage.class));            }        });        return view;    }         @Override    public void onCreate(@Nullable Bundle savedInstanceState) {        setHasOptionsMenu(true);        super.onCreate(savedInstanceState);    }} | 
Output:
For all the drawable file used in this article please refer to this link: https://drive.google.com/drive/folders/1M_knOH_ugCuwSP5nkYzeD4dRp-Honzbe?usp=sharing
Below is the file structure after performing these operations:
				
					



