Java 从Firebase实时数据库获取密钥引用
我正在尝试编写一个应用程序,从我的Java 从Firebase实时数据库获取密钥引用,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在尝试编写一个应用程序,从我的Firebase数据库中抛出随机用户名。为了做到这一点,我需要从每个用户那里获取引用密钥,以便我可以将其映射到应用程序不同部分中的用户名 对,结果如下: public void getRandomUsernames(){ mUsersDatabase1.addValueEventListener(new ValueEventListener() { @Override public void on
Firebase数据库中抛出随机用户名。为了做到这一点,我需要从每个用户那里获取引用密钥,以便我可以将其映射到应用程序不同部分中的用户名
对,结果如下:
public void getRandomUsernames(){
mUsersDatabase1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ArrayList<String> userlist = new ArrayList<String>();
for(DataSnapshot dsp : dataSnapshot.getChildren()){
userlist.add(String.valueOf(dsp.getValue()));
}
Object randomitem = userlist.get(new Random().nextInt(userlist.size()));
Toast.makeText(getBaseContext(), randomitem.toString(), Toast.LENGTH_LONG).show();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
这是我想要的(当然是搭配吐司):
public void getRandomUsernames(){
mUsersDatabase1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ArrayList<String> userlist = new ArrayList<String>();
for(DataSnapshot dsp : dataSnapshot.getChildren()){
userlist.add(String.valueOf(dsp.getValue()));
}
Object randomitem = userlist.get(new Random().nextInt(userlist.size()));
Toast.makeText(getBaseContext(), randomitem.toString(), Toast.LENGTH_LONG).show();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
main活动
public class MainActivity extends AppCompatActivity {
private FirebaseAuth mAuth;
private FirebaseUser mCurrentUser;
private DatabaseReference mUsersDatabase;
private DatabaseReference mUsersDatabase1;
private Toolbar mToolbar;
private String item;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuth = FirebaseAuth.getInstance();
mToolbar = (Toolbar) findViewById(R.id.main_page_toolbar);
mToolbar.setTitleTextColor(Color.WHITE);
setSupportActionBar(this.mToolbar);
getSupportActionBar().setTitle("TestApp");
mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();
String current_uid = mCurrentUser.getUid();
mUsersDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(current_uid);
mUsersDatabase1 = FirebaseDatabase.getInstance().getReference().child("Users");
}
丢弃随机用户名的方法
public void getRandomUsernames(){
mUsersDatabase1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ArrayList<String> userlist = new ArrayList<String>();
for(DataSnapshot dsp : dataSnapshot.getChildren()){
userlist.add(String.valueOf(dsp.getValue()));
}
Object randomitem = userlist.get(new Random().nextInt(userlist.size()));
Toast.makeText(getBaseContext(), randomitem.toString(), Toast.LENGTH_LONG).show();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
public void getRandomUsernames(){
mUsersDatabase1.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
ArrayList userlist=新的ArrayList();
对于(DataSnapshot dsp:DataSnapshot.getChildren()){
添加(String.valueOf(dsp.getValue());
}
Object randomitem=userlist.get(new Random().nextInt(userlist.size());
Toast.makeText(getBaseContext(),randomitem.toString(),Toast.LENGTH_LONG).show();
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
}
}
我尝试过的一切都没有成功。非常感谢您的建议您试过了吗()
public void onDataChange(DataSnapshot DataSnapshot){
ArrayList userlist=新的ArrayList();
ArrayList键列表=新的ArrayList();
对于(DataSnapshot dsp:DataSnapshot.getChildren()){
添加(String.valueOf(dsp.getValue());
添加(dsp.getKey());
}
int randpos=new Random().nextInt(userlist.size());
Object randomitem=userlist.get(randpos);
String key=keylist.get(randpos);
Toast.makeText(getBaseContext(),randomitem.toString()+“key:”+key,Toast.LENGTH_LONG).show();
}
要获取密钥,只需执行以下操作:
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Users");
reference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot datas: dataSnapshot.getChildren()){
String keys=datas.getKey();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
for循环将使您能够在随机键内进行迭代。这stringkeys=datas.getKey()代码>将返回密钥
公共字符串getKey()
此快照的源位置的键名称
更多信息请点击此处:
我现在很高兴。工作起来很有魅力。非常感谢你!!!太好了!:-)很高兴我能帮助你:)