java - 如何从datasnapshot中的recyclerview获取推送的id?

标签 java android arraylist

当我从 firebase 检索所有数据时,我需要从 firebase 获取推送的 id。根据网上资料,它说我需要在for循环内添加一个ArrayList并设置dataSnapshot.getKey()。

table

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

相关文章:

java - LibGDX 针对不同分辨率(如 Android)的不同 Assets

android - onPageFinished 有时不调用 Android WebView

java - 纯Java中两个ArrayLists的内部连接

java - 当你 write(byte[] b) 到 BufferedOutputStream 时会发生什么? ( java )

java - 在 Java Swing 中嵌入 Firefox 浏览器

java - 关于 Servlet 3.1 非阻塞 IO 示例的问题

安卓 : How to restrict disable sync

数组列表中的Java分组值

java - RestTemplate 获取对象列表 - 为什么使用 ParameterizedTypeReference 而不是对象数组?

java - Swing gui 未正确隐藏/显示