当我从 firebase 检索所有数据时,我需要从 firebase 获取推送的 id。根据网上资料,它说我需要在for循环内添加一个ArrayList并设置dataSnapshot.getKey()。
我需要获取 GiLHpCIUXgSleM8a9Bu7uCrwu103。
主要 Activity .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 将其传递给另一个类。
适配器类
@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);
}
}
最佳答案
您正在使用 dataSnapshot
而不是 dataSnapshot1
。使用必须使用dataSnapshot1
来获取Therapist
对象的 key
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);
}
关于java - 如何从datasnapshot中的recyclerview获取推送的id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57156749/