1
votes

I made a query to pull only 6 itens from database inside a RecyclerView, but at this time I can only orderByChild, limitToFirst or last. Everything is working fine but...

I'd like to put Random itens inside the Recyclerview every time I refresh the activity.

How can I put random data inside RecyclerView? Firebase does not have a special Random query. Is there any other way to do it?

Here is my code:

mDatabase = FirebaseDatabase.getInstance().getReference().child("Category");
query = mDatabase.limitToFirst(6); 

@Override
        protected void populateViewHolder(final CategoryViewHolder viewHolder, Category model, int position) {


            viewHolder.setImage(getApplicationContext(), model.getImagem());


            viewHolder.mView.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {


         });


        }


    };


    mImagesList.setAdapter(firebaseRecyclerAdapter);

}

My adapter:

public static class CategoryViewHolder extends RecyclerView.ViewHolder {

    View mView;

    public CategoryViewHolder(View itemView) {
        super(itemView);

        mView = itemView;
    }

    public void setImage(Context ctx, String image1) {

        ImageView image = (ImageView) mView.findViewById(R.id.photo);
        Picasso.with(ctx).load(image1).into(image);

    }
}
1
There is no operator to get random data from your Firebase database. Did you have a look at previous questions asking the same? stackoverflow.com/search?q=%5Bfirebase%5D+random+data - Frank van Puffelen
What else do you have on your Model class? Other than the image url? - Rosário Pereira Fernandes
Yes, I did. But I couldn't find a solution. @frankvanPuffelen - Rodrigo Taborda
Just the image url. @RosárioPereiraFernandes - Rodrigo Taborda

1 Answers

3
votes

I suggest you also add another variable to your Model class. Something like an "id". And you store random Long values in it. (From 0 to 15 for example). And then create a method that will generate a random value (lets say the method's name is generateRandom()). This way, when you want to get the random data, you can use your query like this:

query = mDatabase.orderByChild("id").startAt(generateRandom()).limitToFirst(6);