我在尝试在屏幕上显示一些数据时遇到问题。
我的数据示例:
我想要的是:
我希望能够显示数据-
引用
作者
在我有的两个文本字段上。
但是,我希望在用户转到该页面时随机获取数据。
因此,如果我转到首页并返回报价页面,它可能会显示第三个报价,如果我关闭应用程序并再次打开,则可能会显示第五个报价。我不想一次在列表中全部显示它们。
我试过了:
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);
}
}
最佳答案
找出为什么它不起作用,顺序错误。这是最终答案
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);
}
}
}