从Firebase检索所有数据时,我需要从Firebase获取推送的ID。根据在线消息来源,它说我需要在for循环内添加一个ArrayList并设置dataSnapshot.getKey()。
我需要获取GiLHpCIUXgSleM8a9Bu7uCrwu103。
主要活动。java
ArrayList<String> tkey = new ArrayList<String>();
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot dataSnapshot1: dataSnapshot.child("thera").getChildren()){
Therapist thera= dataSnapshot1.getValue(Therapist.class);
tkey.add(dataSnapshot.getKey());
t.add(thera);
}
for(DataSnapshot dataSnapshot1: dataSnapshot.child("company").getChildren()){
Company comp= dataSnapshot1.getValue(Company.class);
c.add(comp);
}
adapter=new MyRecyclerViewAdapter(MainActivity.this, t,c,tkey);
rv.setAdapter(adapter);
}
在那之后,在适配器类中,我需要使用intent将其传递给另一个类。
Adapter.class
@Override
public void onClick(View view) {
String clickedItem = String.valueOf(position);
Intent intent = new Intent(context, Thera.class);
intent.putExtra("tkey", tkey.get(position));
context.startActivity(intent);
}
但是,当我尝试从所使用的方法显示推送ID时,它将返回一个空白。我可以知道代码的问题在哪里吗?在此先感谢:)
Thera.class
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.therapistdetail);
String key = getIntent().getStringExtra("tkey");
setkey(key);
private void setkey(String key){
TextView nama = findViewById(R.id.key);
nama.setText(key);
}
}
答案 0 :(得分:0)
您使用的是dataSnapshot
而不是dataSnapshot1
。使用必须使用dataSnapshot1
来获取Therapist
对象的密钥
for(DataSnapshot dataSnapshot1: dataSnapshot.child("thera").getChildren()){
Therapist thera= dataSnapshot1.getValue(Therapist.class);
tkey.add(dataSnapshot1.getKey()); // <-- Here you need to use dataSnapshot1
t.add(thera);
}