【问题标题】:Firebase Android: Display data randomlyFirebase Android:随机显示数据
【发布时间】:2019-12-10 20:33:44
【问题描述】:

我在尝试在屏幕上显示一些数据时遇到问题。

我的数据示例:

我想要什么:

我希望能够显示数据-

报价

作者

在我拥有的两个文本字段上。

但是,我希望在用户访问该页面时随机获取数据。

所以如果我回到主页并返回报价页面,它可能会显示第三个报价,如果我关闭应用程序并再次打开,它可能会显示第五个报价。我不想在列表中一次显示它们。

我试过了:

How to fetch data from firebase real time database in android

Get random data android firebase database in RecyclerView

我当前的代码:

name = findViewById(R.id.author);
    quote = findViewById(R.id.quote);

    auth = FirebaseAuth.getInstance();
    user = auth.getCurrentUser();

    databaseReference = FirebaseDatabase.getInstance().getReference("Quotes");

    databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for(DataSnapshot datas: dataSnapshot.getChildren()){
                String authorName = datas.child("AUTHOR").getValue().toString();
                String quoteGiven = datas.child("QUOTE").getValue().toString();

                name.setText(authorName);
                quote.setText(quoteGiven);
            }
        }

【问题讨论】:

  • 我在尝试随机 recylerviewer 时收到此错误 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on an null object reference

标签: java android database firebase


【解决方案1】:

找出它为什么不起作用,它的顺序错误。这是最终答案

name = findViewById(R.id.author);
    quote = findViewById(R.id.quote);
    btn = findViewById(R.id.button);

    auth = FirebaseAuth.getInstance();
    user = auth.getCurrentUser();

    databaseReference = FirebaseDatabase.getInstance().getReference("Quotes");
    databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            int count = (int) dataSnapshot.getChildrenCount();
            for(DataSnapshot datas: dataSnapshot.getChildren()){
                int rand = new Random().nextInt(count);
                    for (int i = 0; i < rand; i++) {
                        String authorName = datas.child("AUTHOR").getValue().toString();
                        String quoteGiven = datas.child("QUOTE").getValue().toString();
                        name.setText(authorName);
                        quote.setText(quoteGiven);
                    }
            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 2018-09-10
    • 2019-01-03
    相关资源
    最近更新 更多