0

I am using Firebase recycler adapter of firebaseui to show values from databse.
Here is my code to fetch value from database

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

    mRef = FirebaseDatabase.getInstance().getReference();

    listRef =mRef.child("itemlist");


    recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
    recyclerViewLayoutManager = new LinearLayoutManager(this);
    recyclerView.setHasFixedSize(false);
    recyclerView.setLayoutManager(recyclerViewLayoutManager);

    recyclerView.addOnItemTouchListener(
            new RecyclerItemClickListener(MainActivity.this, recyclerView, new RecyclerItemClickListener.OnItemClickListener() {
                @Override
                public void onItemClick(View childView, int position) {
                    Log.v(TAG,"YouClickon"+ position);


                }
            }){

            }
    );
}

@Override
protected void onStart() {
    super.onStart();

    attachRecyclerViewAdapter();

}

@Override
protected void onStop() {
    super.onStop();

    if(mRecyclerViewAdapter != null){
        mRecyclerViewAdapter.cleanup();
    }
}

private void attachRecyclerViewAdapter() {

    mRecyclerViewAdapter = new FirebaseRecyclerAdapter<ItemList, ItemHolder>(
            ItemList.class,
            R.layout.shop_recycler_row_view,
            ItemHolder.class,
            listRef
    ) {
        @Override
        protected void populateViewHolder(ItemHolder itemHolder, ItemList item, int i) {
            itemHolder.setName(item.getName());
            itemHolder.setDescription(item.getDescription());
        }
    };

    recyclerView.setAdapter(mRecyclerViewAdapter);
}


public static class ItemHolder extends RecyclerView.ViewHolder{
    View mView;

    public ItemHolder(View itemView) {
        super(itemView);
        mView = itemView;
    }

    public void setName(String name){
        TextView field = (TextView) mView.findViewById(R.id.tv_shopName);
        field.setText(name);
    }

    public void setDescription(String text) {
        TextView field = (TextView) mView.findViewById(R.id.tv_shopDesc);
        field.setText(text);
    }



}

The json structure for database is as given below:

{
 "itemlist" : {
"-KJ5USfIBXgAfpurhHjE" : {
  "-KJ5Uf0XkahJ5fqio8kq" : {
    "description" : "Minal",
    "img_url" : "HIU",
    "name" : "Milan ni item"
  },
  "-KJ5Ul7ZT2oKuCLxOY78" : {
    "description" : "nathi kevi😷😷",
    "img_url" : "HIU",
    "name" : "mari item"
  }
},
"-KJ5VJtTUQqKnHmuu1tY" : {
  "-KJ5d7aggDnYKz65PMHa" : {
    "description" : "whaajakakq",
    "img_url" : "HIU",
    "name" : "Sweet"
  }
}
},
"shoplist" : {
"-KJ5USfIBXgAfpurhHjE" : {
  "description" : "Milan ne Maru mane aaje muki ne chalya gaya fir ek baar",
  "img_url" : "https://firebasestorage.googleapis.com/v0/b/fooder-5eba6.appspot.com/o/shop_images%2Fimage%3A26208?alt=media&token=75228031-dccd-4c45-bfcf-abe634d58bc6",
  "name" : "31st May 2016"
},
"-KJ5Uy4ALcLcJhKH6o9U" : {
  "description" : "shop bhavnagar",
  "img_url" : "https://firebasestorage.googleapis.com/v0/b/fooder-5eba6.appspot.com/o/shop_images%2Fimage%3A26213?alt=media&token=7aa14525-0fc5-4c11-a8fb-a44ab121bcfa",
  "name" : "Daas"
},
"-KJ5VJtTUQqKnHmuu1tY" : {
  "description" : "dukaan",
  "img_url" : "https://firebasestorage.googleapis.com/v0/b/fooder-5eba6.appspot.com/o/shop_images%2Fimage%3A26203?alt=media&token=748363be-f0ab-45b4-bd7d-f58be2308b6c",
  "name" : "offline"
     }
   }
 }

Now i want to show values from itemlist. How can i do it?.

Mehul Kanzariya
  • 888
  • 3
  • 27
  • 58
  • You've included a link to a picture of the JSON tree in your question. Please replace that with the actual JSON as text, which you can easily get by clicking the Export button in your Firebase database. Having the JSON as text makes it searchable, allows us to easily use it to test with your actual data and use it in our answer and in general is just a Good Thing to do. – Frank van Puffelen May 31 '16 at 14:35
  • @FrankvanPuffelen Sir did as u said – Mehul Kanzariya May 31 '16 at 18:33

1 Answers1

0

Always i retrive values from firebase as following

//GET DATA FROM FIREBASE INTO ARRAYLIST
    fb_to_read.addValuesEventListener....{
        public void onDataChange(DataSnapshot result){
            List<String> lst = new ArrayList<String>(); // Result will be holded Here
            for(DataSnapshot dsp : result.getChildren()){
                lst.add(String.valueOf(dsp.getKey())); //add result into array list
            }
            //NOW YOU HAVE ARRAYLIST WHICH HOLD RESULTS
        for(String data:lst){ 
             Toast.make(context,data,Toast.LONG_LENGTH).show; 
           }
        }
}
ugali soft
  • 2,719
  • 28
  • 25
  • That's indeed one way of getting items from Firebase into Android. OP is using `FirebaseRecyclerAdapter`, which handles the loading/synchronizing from Firebase automatically, so that is a different approach. – Frank van Puffelen May 31 '16 at 18:54
  • @FrankvanPuffelen Sir can you please help me. I am badly stuck at this. – Mehul Kanzariya May 31 '16 at 19:08
  • Take a look at this link http://stackoverflow.com/questions/32886546/how-to-get-all-child-list-from-firebase-android/36600791#36600791 – ugali soft May 31 '16 at 19:14