我已經爲我的用戶設置了一項活動,以便將消息輸入到Firebase數據庫中,並另一項活動隨機調用這些消息。然而,我似乎無法得到隨機方法去...召回方法只是一次又一次地點擊相同的消息。從Firebase數據庫中獲取隨機值
我使用和編輯該用戶名虛無這裏發佈get random value android firebase java 所以我真的不明白它是如何工作的方法...
這裏的寫入數據庫的代碼:
public class PostActivity extends AppCompatActivity {
private EditText PostField;
private Button postSubmit;
private DatabaseReference mDatabasePosts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_post);
postSubmit = (Button)findViewById(R.id.postSubmit);
postField = (EditText)findViewById(R.id.postField);
mDatabasePosts = FirebaseDatabase.getInstance().getReference().child("posts");
postSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startPosting();
}
private void startPosting() {
final String postVal = postField.getText().toString().trim();
if (!TextUtils.isEmpty(postVal)) {
//post creation
DatabaseReference newPost = mDatabasePosts.push();
newPost.setValue(postVal);
Toast.makeText(PostActivity.this, "Post registered", Toast.LENGTH_SHORT).show();
startActivity(new Intent(PostActivity.this, HomeActivity.class));
}
}
});
}
}
沒有什麼花哨的...
關於檢索活動,我有一個按鈕,它會隨機顯示一個文本(以及至少目標是)寫入數據庫的文本...這裏是該acti的代碼VITY:
DatabaseReference mPost;
mPost = FirebaseDatabase.getInstance().getReference().child("posts");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mPost.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
long allNum = dataSnapshot.getChildrenCount();
int maxNum = (int)allNum;
int randomNum = new Random().nextInt(maxNum);
int count = 0;
Iterable<DataSnapshot> ds = dataSnapshot.getChildren();
Iterator<DataSnapshot> ids = ds.iterator();
String newPost = (String) ids.next().getValue();
while(ids.hasNext() && count < randomNum) {
ids.next();
count ++; // used as positioning.
}
Toast.makeText(HomeActivity.this, newPost,Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
});
數據庫看起來是這樣的:
posts
L random key: "text 1"
L random key: "text 2"
L random key: "text 3"
L random key: "text 4"
L random key: "text 5"
L random key: "text 6"
所以此刻,每次我按一下按鈕...它不斷呼籲「文本1」我想它來調用文本1和2交替和隨機...
任何人都可以幫助我嗎?
非常感謝您的幫助。我正在給「貼子」的孩子添加更多的孩子,但無濟於事......我仍然只得到第一個孩子的價值 我是否正確地做了這件事? 'long allNum = dataSnapshot.getChildrenCount(); int maxNum =(int)allNum; int minNum = 1; int randomNum = new Random()。nextInt(maxNum - minNum + 1)+ minNum; int count = 0' 非常感謝! – Jagmaster
對不起...嘗試按照格式的評論,但仍然無法獲得代碼格式正確... – Jagmaster
我不明白這行Iterator ids = ds.iterator();迭代器有多少項? –