繁体   English   中英

Firebase中如何获取父节点

[英]How to get parent node in Firebase

我正在使用 Firebase 将内容显示到RecyclerView中。 在适配器 class 中,我使用此代码传递选定节点的密钥:

holder.view.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(context, NewsDetails.class);
            intent.putExtra("NewsKey",getRef(position).getKey());
            context.startActivity(intent);
        }
    });

此代码传递了键(屏幕截图中的蓝色箭头),我还想将父节点(红色箭头)作为字符串传递。 我如何获取父节点并将其传递给putExtra

数据

这是我如何调用我的数据库:

private void setUpFirebase() {
    newsRecycler = findViewById(R.id.newsRecycler);
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
    linearLayoutManager.setReverseLayout(true);
    linearLayoutManager.setStackFromEnd(true);
    newsRecycler.setLayoutManager(linearLayoutManager);

    FirebaseRecyclerOptions<NewsItem> options =
            new FirebaseRecyclerOptions.Builder<NewsItem>().setQuery(FirebaseDatabase.getInstance().getReference().child("news"), NewsItem.class).build();

    newsAdapter = new NewsAdapter(options, this);
    newsRecycler.setAdapter(newsAdapter);
}

您可以在您的情况下对数据库引用“ getRef(position) ”使用getParent() ,然后使用putExtra()将其密钥放入意图中

Intent intent = new Intent(context, NewsDetails.class);
intent.putExtra("NewsKey", getRef(position).getKey());
DatabaseReference parent = getRef(position).getParent();
if (parent != null)
    intent.putExtra("ParentKey", parent.getKey());
context.startActivity(intent);

你可以试试

if(ref.parent() != null) {
  val news = ref.parent().key()
}

有关更多信息,请阅读DatabaseReference#getParent()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM