How can I get specific user info from Firebase and display in RecyclerView?

1

Desired Behaviour: Trying to display a single user info i.e. all the project titles and descriptions "protitle" and "prodesc" data from Firebase after log-in. At present, my app crashes when I log in.

Note: I am pushing username from the login page using intent.putExtra()

My database snapshot: database snapshot

Error:

2020-11-01 08:58:13.576 8840-8840/? E/m.example.star: Unknown bits set in runtime_flags: 0x800000
2020-11-01 08:58:13.700 8840-8840/com.example.start E/libc: Access denied finding property "persist.vendor.hwui.skia.reduce.overdraw.enabled"
2020-11-01 08:58:13.701 8840-8840/com.example.start E/libc: Access denied finding property "persist.vendor.fps.boost.enabled"
2020-11-01 08:58:13.701 8840-8840/com.example.start E/libc: Access denied finding property "persist.vendor.fps.app.boost.enabled"
2020-11-01 08:58:13.701 8840-8840/com.example.start E/libc: Access denied finding property "persist.vendor.fps.turbo.boost.enabled"
2020-11-01 08:58:13.701 8840-8840/com.example.start E/libc: Access denied finding property "persist.vendor.fps.hwui.frame.tracer.boost.enabled"
2020-11-01 08:58:13.701 8840-8840/com.example.start E/libc: Access denied finding property "persist.vendor.fps.hwui.frame.tracer.boost.next.draw.config"
2020-11-01 08:58:13.701 8840-8840/com.example.start E/libprocessgroup: set_timerslack_ns write failed: Operation not permitted
2020-11-01 08:58:13.701 8840-8840/com.example.start E/libc: Access denied finding property "persist.vendor.hwui.debug.fps.tracer.historysize"
2020-11-01 08:58:13.774 8840-8840/com.example.start E/m.example.star: Invalid ID 0x00000000.
2020-11-01 08:58:13.790 8840-8840/com.example.start E/m.example.star: Invalid ID 0x00000000.
2020-11-01 08:58:13.890 8840-17965/com.example.start E/libc: Access denied finding property "persist.vendor.hwui.skia.reduce.overdraw.enabled"

Main Class:

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

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

import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
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;

public class BeginStart extends AppCompatActivity {

 FirebaseDatabase rootNode;
    DatabaseReference ref;
   private RecyclerView recyclerView;
    String Receive_username;


    private FirebaseRecyclerOptions<model> options;
    private FirebaseRecyclerAdapter<model, MyViewHolder> adapter;


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

 //receive username to connect data
        Intent intent = getIntent();
        Receive_username = intent.getStringExtra("push_username");

        rootNode = FirebaseDatabase.getInstance();
        ref = rootNode.getReference("Users").child(Receive_username);



        recyclerView =findViewById(R.id.testrecycle);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));

  options = new FirebaseRecyclerOptions.Builder<model>().setQuery(ref, model.class).build();
        adapter = new FirebaseRecyclerAdapter<model, MyViewHolder>(options) {
            @Override
            protected void onBindViewHolder(@NonNull final MyViewHolder holder, int position, @NonNull final model model) {
                //Toast.makeText(getApplicationContext(), "On Bind!", Toast.LENGTH_SHORT).show();
                holder.textViewtitle.setText(model.getProtitle());
                holder.textViewdesc.setText(model.getProdesc());
            }

            @NonNull
            @Override
            public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
               View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_view_layout,parent,false);
                return new MyViewHolder(v);
            }
        };

        adapter.startListening();
        recyclerView.setAdapter(adapter);

    }
}

Model Class:

public class model {

    String protitle, prodesc;

    public model() {
    }

    public model(String protitle, String prodesc) {
        this.protitle = protitle;
        this.prodesc = prodesc;
    }

    public String getProtitle() {
        return protitle;
    }

    public void setProtitle(String protitle) {
        this.protitle = protitle;
    }

    public String getProdesc() {
        return prodesc;
    }

    public void setProdesc(String prodesc) {
        this.prodesc = prodesc;
    }
}

View Handler Class:

import android.view.View;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

class MyViewHolder extends RecyclerView.ViewHolder {

TextView textViewtitle, textViewdesc;




    public MyViewHolder(@NonNull View itemView) {
        super(itemView);

        textViewtitle = itemView.findViewById(R.id.textviewtitle);
        textViewdesc = itemView.findViewById(R.id.textviewdesc);
    }
}

RecyclerView layout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">


    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/testrecycle"
        android:layout_marginRight="16dp"
        android:layout_marginLeft="16dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >

    </androidx.recyclerview.widget.RecyclerView>

</LinearLayout>

Single view layout for RecyclerView:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="wrap_content">


<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textviewtitle"
    android:text="title"
    android:textSize="30dp"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textviewdesc"
        android:text="email"
        android:textSize="30dp"/>





</LinearLayout>
java
android
firebase
firebase-realtime-database
android-recyclerview
asked on Stack Overflow Nov 1, 2020 by Tom Bruno • edited Nov 1, 2020 by Tom Bruno

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0