1

Я сделал запрос, чтобы вытащить всего 6 единиц из базы данных внутри RecyclerView, но в это время я могу только orderByChild, limitToFirst или last. Все работает нормально, но ...Firebase: Извлечь случайные данные из Firebase в RecyclerView (android)

Я хочу помещать Random itens внутри Recyclerview каждый раз, когда я обновляю активность.

Как я могу поместить случайные данные внутри RecyclerView? У Firebase нет специального случайного запроса. Есть ли другой способ сделать это?

Вот мой код:

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); 

} 

Мой адаптер:

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); 

    } 
} 
+0

Оператора не получить случайные данные из базы данных Firebase. Вы видели предыдущие вопросы, задавая то же самое? http://stackoverflow.com/search?q=%5Bfirebase%5D+random+data –

+0

Что еще вы имеете в своем классе модели? Помимо URL-адреса изображения? –

+0

Да, да. Но я не мог найти решение. @frankvanPuffelen –

ответ

2

Я предлагаю вам добавить еще одну переменную в класс модели. Что-то вроде «id». И вы храните в нем случайные значения Long. (Например, от 0 до 15). И затем создайте метод, который будет генерировать случайное значение (скажем, имя метода generateRandom()). Таким образом, когда вы хотите получить случайные данные, вы можете использовать свой запрос следующим образом:

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

Большое вам спасибо! Работает! –