【问题标题】:Firebase: Pull random data from Firebase to RecyclerView (android)Firebase:将随机数据从 Firebase 拉到 RecyclerView (android)
【发布时间】:2017-06-21 21:15:25
【问题描述】:

我做了一个查询,从 RecyclerView 内的数据库中只提取 6 个项目,但此时我只能 orderByChild、limitToFirst 或 last。一切正常,但是...

我想在每次刷新活动时将随机项放入 Recyclerview 中。

如何将随机数据放入 RecyclerView? Firebase 没有特殊的 Random 查询。还有其他方法吗?

这是我的代码:

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

    }
}

【问题讨论】:

  • 没有操作员可以从您的 Firebase 数据库中获取随机数据。您是否看过以前提出相同问题的问题? stackoverflow.com/search?q=%5Bfirebase%5D+random+data
  • 你的模型课上还有什么?除了图片网址?
  • 是的,我做到了。但我找不到解决方案。 @frankvanPuffelen
  • 只是图片的网址。 @RosárioPereiraFernandes

标签: android random firebase android-recyclerview firebase-realtime-database


【解决方案1】:

我建议您还向模型类添加另一个变量。类似“id”的东西。你在其中存储随机的Long 值。 (例如从 0 到 15)。 然后创建一个将生成随机值的方法(假设该方法的名称是generateRandom())。这样,当您想获取随机数据时,您可以像这样使用查询:

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

【讨论】:

  • 假设数据库中有 10 个 id 为 1 到 10 的项目,我想要随机的 6 个项目。如果 generateRandom() 返回 8 ,查询不会抛出异常吗?因为这样查询将只返回 3 个 id 为 8,9,10 的项目。
  • @N.K.TI 认为没有问题。除非 generateRandom() 返回一个 > 9 的数字(因为 11 和 12 不存在)。如果是这种情况,可能会更改方法以返回 1 到 8 之间的数字。
  • @RosárioPereiraFernandes 如果我们生成随机编号,如果我们将此查询用于大型数据库(例如拥有 100k 用户的数据库)是否很好。介于 1 到 100 之间,那么前 6 个 id 介于 1 到 10000 之间的用户将显示 rest 将永远不可见。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 2021-02-08
  • 2019-03-24
  • 2022-06-27
  • 1970-01-01
相关资源
最近更新 更多