I am using a recycleview to display data from firebase database but i am having trouble displaying it for context I will put the codes here

result.java

package com.example.profile;

import androidx.appcompat.app.AppCompatActivity;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.annotation.NonNull;


import android.util.Log;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import android.widget.EditText;
import android.text.TextWatcher;
import android.text.Editable;

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.ValueEventListener;
import java.util.ArrayList;

public class Result extends AppCompatActivity {
DrawerLayout drawerLayout;
private static final String TAG = “Result”;
private EditText mNodeNameEditText;
private DatabaseReference mDatabaseRef;

private RecyclerView mRecyclerView;
private RecyclerViewAdapter mAdapter;
private ArrayList<Pair<String, String>> mData;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);

drawerLayout = findViewById(R.id.drawer_activity);

mNodeNameEditText = findViewById(R.id.node_name_edit_text);

// Set up RecyclerView
mRecyclerView = findViewById(R.id.recycler_view);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

mData = new ArrayList<>();
mAdapter = new RecyclerViewAdapter(Result.this, mData);
mRecyclerView.setAdapter(mAdapter);

// Set default node of the database
mDatabaseRef = FirebaseDatabase.getInstance().getReference(“users”);

mNodeNameEditText.removeTextChangedListener(textWatcher);
mNodeNameEditText.addTextChangedListener(textWatcher);
}

// TextWatcher implementation
private final TextWatcher textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}

@Override
public void afterTextChanged(Editable s) {
String nodeName = mNodeNameEditText.getText().toString().trim();
if (!nodeName.isEmpty()) {
retrieveData(nodeName);
} else {
Toast.makeText(Result.this, “Please enter a phone number”, Toast.LENGTH_SHORT).show();
}
}
};

private void retrieveData(String phoneNumber) {
DatabaseReference myRef = mDatabaseRef.child(phoneNumber);

myRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
Log.d(TAG, “Data snapshot exists: " + dataSnapshot.toString());
} else {
Log.d(TAG, “Data snapshot doesn’t exist”);
}

mData.clear();
for (DataSnapshot idSnapshot : dataSnapshot.getChildren()) {
UserData userData = idSnapshot.getValue(UserData.class);

if (userData != null) {
Log.d(TAG, “Data received: " + userData.toString());
mData.add(new Pair<>(“Soreness Label”, userData.soreness_label));
mData.add(new Pair<>(“EMG Data”, userData.emg_data));
mData.add(new Pair<>(“GSR Data”, userData.gsr_data));
mData.add(new Pair<>(“Timestamp”, userData.timestamp));
} else {
Log.d(TAG, “UserData object is null”);
}
}
mAdapter.notifyDataSetChanged();
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.w(TAG, “Failed to read value.”, databaseError.toException());
}
});
}
}


activity_result.xml

<?xml version=“1.0” encoding=“utf-8”?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android=“http://schemas.android.com/apk/res/android”
xmlns:app=“http://schemas.android.com/apk/res-auto”
xmlns:tools=“http://schemas.android.com/tools”
android:id=”@+id/drawer_activity”
android:layout_width=“match_parent”
android:layout_height=“match_parent”
tools:context=“.Result”>


<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=“match_parent”
android:layout_height=“match_parent”>

<EditText
android:id=“@+id/node_name_edit_text”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:layout_margin=“8dp”
android:hint=“Enter node name”
app:layout_constraintTop_toTopOf=“parent” />

<androidx.recyclerview.widget.RecyclerView
android:id=“@+id/recycler_view”
android:layout_width=“match_parent”
android:layout_height=“0dp”
android:layout_marginTop=“8dp”
app:layout_constraintBottom_toBottomOf=“parent”
app:layout_constraintTop_toBottomOf=“@+id/node_name_edit_text” />

</androidx.constraintlayout.widget.ConstraintLayout>

<RelativeLayout
android:layout_width=“300dp”
android:layout_height=“match_parent”
android:layout_gravity=“start”
android:background=“@color/white”>

<include layout=“@layout/main_navigation_drawer” />
</RelativeLayout>

</androidx.drawerlayout.widget.DrawerLayout>


userdata.java

package com.example.profile;

public class UserData {
public String emg_data;
public String gsr_data;
public String soreness_label;
public String timestamp;

public UserData() {
}

@Override
public String toString() {
return “UserData{” +
“emg_data='” + emg_data + “'” +
“, gsr_data='” + gsr_data + “'” +
“, soreness_label='” + soreness_label + “'” +
“, timestamp='” + timestamp + “'” +
‘}’;
}
}


recycleviewadapter.java

package com.example.profile;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.example.profile.R;

import java.util.ArrayList;

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {

private ArrayList<Pair<String, String>> mData;
private LayoutInflater mInflater;

// data is passed into the constructor
public RecyclerViewAdapter(Context context, ArrayList<Pair<String, String>> data) {
this.mInflater = LayoutInflater.from(context);
this.mData = data;
}

// inflates the cell layout from xml when needed
@Override
@NonNull
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = mInflater.inflate(R.layout.recyclerview_item, parent, false);
return new ViewHolder(view);
}

// binds the data to the TextViews in each cell
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Pair<String, String> pair = mData.get(position);
holder.nameTextView.setText(pair.first);
holder.dataTextView.setText(pair.second);
}

// total number of cells
@Override
public int getItemCount() {
return mData.size();
}

// stores and recycles views as they are scrolled off screen
public class ViewHolder extends RecyclerView.ViewHolder {
TextView nameTextView;
TextView dataTextView;

ViewHolder(View itemView) {
super(itemView);
nameTextView = itemView.findViewById(R.id.textview_name);
dataTextView = itemView.findViewById(R.id.textview_data);
}
}
}

googlebase structure

/users/09123456789/-NT4APgDfX15GW0fi1pP

-NT4APgDfX15GW0fi1pP
emg_data
:
930
gsr_data
:
394
soreness_label
:
“exhausted”
timestamp
:
“2023-04-15 06:49:33”