如何从datasnapshot中的recyclerview获取推送的ID?

时间:2019-07-23 04:35:00

标签: java android arraylist

从Firebase检索所有数据时,我需要从Firebase获取推送的ID。根据在线消息来源,它说我需要在for循环内添加一个ArrayList并设置dataSnapshot.getKey()。

table

我需要获取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);

    }

    }

1 个答案:

答案 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);
}