-3

This is my code:

When I am running this code unfortunately your app stopped error is showing.

Not showing error in Android Studio only the app is crashing.

I think I'm getting in setting the reference.

   import android.support.v7.app.AppCompatActivity;
   import android.os.Bundle;
   import android.support.v7.widget.LinearLayoutManager;
   import android.support.v7.widget.RecyclerView;
   import android.view.View;
   import android.widget.TextView;
   import android.widget.Toast;
   import com.firebase.ui.database.FirebaseRecyclerAdapter;
   import com.google.firebase.database.DatabaseReference;
   import com.google.firebase.database.FirebaseDatabase;

 public class FoodActivity extends AppCompatActivity {
 private DatabaseReference mDatabaseRef;
 private RecyclerView mRecycler;
 private FirebaseDatabase mFirebaseDatabase;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_food);
    String data = getIntent().getStringExtra("data");
    mFirebaseDatabase = FirebaseDatabase.getInstance();
    Toast.makeText(this, "select "+data, Toast.LENGTH_SHORT).show();
    mDatabaseRef = mFirebaseDatabase.getReference().child("item/1");
    mRecycler=(RecyclerView) findViewById(R.id.listViewFood);
    mRecycler.setHasFixedSize(true);
    mRecycler.setLayoutManager(new LinearLayoutManager(this));

}

@Override
protected void onStart() {
    super.onStart();
    FirebaseRecyclerAdapter<Food,foodViewHolder> mFirebaseAdapter=new FirebaseRecyclerAdapter<Food, foodViewHolder>(
            Food.class,R.layout.food_list,foodViewHolder.class,mDatabaseRef
    ) {
        @Override
        protected void populateViewHolder(foodViewHolder viewHolder, Food model, int position) {
           viewHolder.setfname(model.getfname());
           viewHolder.setPrice(model.getPrice());
        }
    };
    mRecycler.setAdapter(mFirebaseAdapter);
}

public static class foodViewHolder extends RecyclerView.ViewHolder{
    View mView;
    public foodViewHolder(View itemView) {

        super(itemView);
        mView= itemView;
    }
    public void setfname(String fname){
        TextView tvFood=(TextView) mView.findViewById(R.id.tvFood);
        tvFood.setText(fname);
    }
    public void setPrice(int price){
        TextView tvprice=(TextView) mView.findViewById(R.id.fprice);
        tvprice.setText(String.valueOf(price));
    }
}
}
halfer
  • 19,824
  • 17
  • 99
  • 186
  • please post at least a photo of your database, we dont know if your reference is orret or not if we dont see the database structure – Gastón Saillén Mar 16 '18 at 14:37
  • kelo copy paste, chi b 2aref sayra hal tag!!! – Peter Haddad Mar 16 '18 at 14:45
  • Possible duplicate of [I cant see any FirebaseRecyclerAdapter items on my layout](https://stackoverflow.com/questions/48846631/i-cant-see-any-firebaserecycleradapter-items-on-my-layout) – Alex Mamo Mar 16 '18 at 16:08

1 Answers1

0

Remember to retrieve data you should do this in your onStart()

 @Override
protected void onStart() {
    super.onStart();
    adapter.startListening();
}

What it does

The FirebaseRecyclerAdapter uses an event listener to monitor changes to the Firebase query. To begin listening for data, call the startListening() method. You may want to call this in your onStart() method. Make sure you have finished any authentication necessary to read the data before calling startListening() or your query will fail.

and in your onStop();

@Override
protected void onStop() {
    super.onStop();
    adapter.stopListening();
}

Similarly, the stopListening() call removes the event listener and all data in the adapter. Call this method when the containing Activity or Fragment stops

Edit: make your adapter global

private FirebaseRecyclerAdapter<Food,foodViewHolder> mFirebaseAdapter;

and then in your onStart(); change this

FirebaseRecyclerAdapter<Food,foodViewHolder> mFirebaseAdapter=new FirebaseRecyclerAdapter<Food, foodViewHolder>(
            Food.class,R.layout.food_list,foodViewHolder.class,mDatabaseRef....

to this

mFirebaseAdapter=new FirebaseRecyclerAdapter<Food, foodViewHolder>(
            Food.class,R.layout.food_list,foodViewHolder.class,mDatabaseRef...

hope it helps

Happy coding !

Gastón Saillén
  • 12,319
  • 5
  • 67
  • 77