我如何检索随机值Firebase数据库

时间:2018-01-14 00:43:20

标签: java android firebase

我有一个firebase数据库,其中有一棵树,看起来像这样

tvthemetunes
airwolf value "url to air wolftheme"
eastenders value "url to eastenders"
knight rider value "url to nightrider"

依旧......

在我的应用用户下载项目,而项目下载电视主题将从网址播放。我可以让它在单个项目的值事件时正常工作。我希望它从列表中随机选择一个值。怎么能实现这个?

编辑可以使用回收查看方法,因为我的应用程序不包含任何

这是我的单项

代码
 protected Dialog onCreateDialog(int id) {

    switch (id) {
        case progress_bar_type:
    //Here is where i play the theme
            getthemetune();
            pDialog = new ProgressDialog(c);
            pDialog.setTitle(MY Title);
            pDialog.setMessage(MY Message);
            pDialog.setIcon(R.mipmap.ic_launcher);
            pDialog.setIndeterminate(false);
            pDialog.setMax(100);
            pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            pDialog.setCancelable(false);
            pDialog.show();

            return pDialog;
        default:

            return null;
    }
}
private void getthemetune(){
  mthemetuneref = FirebaseDatabase.getInstance();
    DatabaseReference ref = mthemetuneref.getReference().child(MYREF);
    ref.child("airwolf").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
//Edit to add Alex's answer?
          long childrenCount = datasnapshot.getChildrenCount();
          int count = (int) childrenCount;

//Dont know how to use this
          int randomNumber = new Random().nextInt(count);

            plysound();

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}
private void plysound(){
mp = new MediaPlayer();
String j =
tvThemeTune.toString();
Log.i("Url",j);
try {
    mp.setDataSource(j);
} catch (IOException e) {
    e.printStackTrace();
}
try {
    mp.prepare();
} catch (IOException e) {
    e.printStackTrace();
}
mp.start();
Log.i("Sound playing", "Ok");
mp.setLooping(true);

}

1 个答案:

答案 0 :(得分:4)

要解决此问题,请使用以下代码行:

long childrenCount = snapshot.getChildrenCount();
int count = (int) childrenCount;
int randomNumber = new Random().nextInt(count);

然后使用for循环使用随机数拉取该值:

int i=0;
String themeTune; //Your random themeTune will be stored here
for (DataSnapshot snap : snapshot.getChildren()) {
    if(i = randomNumber) {
        themeTune = snap.getValue(String.class);
        break;
    }
    i++;
}
plysound();