【问题标题】:Firebase Real Time Database confusionFirebase 实时数据库混乱
【发布时间】:2019-08-16 06:30:05
【问题描述】:

我正在尝试使用 firebase 创建一个实时数据库,但我的信息没有按应有的方式存储。 JSON数据格式如下:

如何摆脱 djProfile 的多个实例?在那棵分层树中,随机的字母和数字串是什么意思?

这是我用来尝试检索此信息并将其存储在我的 firebase recyclerview 中的 android 类:

DjProfile 类:

public class DjProfile
{
    String djName, uniqueID;


    public DjProfile(){}

    public DjProfile(String djName, String uniqueID)
    {
        this.djName = djName;
        this.uniqueID = uniqueID;
    }

    public String getDjName() { return djName; }
    public String getUniqueID() {return uniqueID; }
}

Recycler查看信息:

RecyclerView recyclerView = findViewById(R.id.dj_result_recycler); recyclerView.setLayoutManager(new LinearLayoutManager(this));

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    Query query = rootRef.child("djProfile");

    FirebaseRecyclerOptions<DjProfile> firebaseRecyclerOptions = new FirebaseRecyclerOptions.Builder<DjProfile>()
            .setQuery(query, DjProfile.class)
            .build();

    firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<DjProfile, ResultsViewHolder>(firebaseRecyclerOptions)
    {

        @NonNull
        @Override
        public ResultsViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
            View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.searchitem_list, viewGroup, false);

            return new ResultsViewHolder(view);
        }

        @Override
        protected void onBindViewHolder(@NonNull ResultsViewHolder holder, int position, @NonNull DjProfile model) {
            holder.setDjProfile(model);
        }
    };
    recyclerView.setAdapter(firebaseRecyclerAdapter);
}

@Override
protected void onStart()
{
    super.onStart();
    firebaseRecyclerAdapter.startListening();
}

@Override
protected void onStop()
{
    super.onStop();
    if(firebaseRecyclerAdapter != null)
    {
        firebaseRecyclerAdapter.stopListening();
    }
}





public static class ResultsViewHolder extends RecyclerView.ViewHolder
{
    private TextView djNameView;

    public ResultsViewHolder(View itemView)
    {
        super(itemView);
        djNameView = itemView.findViewById(R.id.result_dj);
    }

    void setDjProfile(DjProfile profile)
    {
        String djName = profile.getDjName();
        djNameView.setText(djName);
    }
}

我怎样才能只检索该 djProfile 中的名称?我错过了什么?

非常感谢任何反馈!

【问题讨论】:

    标签: android json firebase firebase-realtime-database


    【解决方案1】:

    在分层树中随机的字母和数字串是什么意思?

    每次您在引用上调用push() 时,都会创建以-Lar 开头的密钥。它相当于 Firebase 的数组索引。要了解有关它们的更多信息,请参阅 The 2^120 Ways to Ensure Unique IdentifiersBest Practices: Arrays in Firebase

    【讨论】:

    • 哦,我明白了,那么如何从“数组索引”获取信息并让 djname 显示在 recyclerview 中?
    猜你喜欢
    • 2016-01-16
    • 2015-07-20
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 2017-03-13
    • 2011-07-21
    • 2020-07-05
    • 2021-07-01
    相关资源
    最近更新 更多