Android - Firebase Ui get data from other table?

雨燕双飞 提交于 2019-12-13 08:11:19

问题


Hello everyone I need to get user_fname from other table reference with uid

Below this my code I'm use IndexedQuery and not clear from tutorial and sample code Firebase Ui

mRef = FirebaseDatabase.getInstance().getReference().child("mainboard");
mReference = FirebaseDatabase.getInstance().getReference().child("user");
mRecyclerView = view.findViewById(R.id.mainboard_alllist);
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
mLayoutManager = new LinearLayoutManager(getContext());
mOption = new FirebaseRecyclerOptions.Builder<Mainboard>().
            setIndexedQuery(mRef , mReference  ,Mainboard.class)
            .setLifecycleOwner(this)
            .build();

mAdapter = new FirebaseRecyclerAdapter<Mainboard, MainboardViewHolder>(mOption) {
    @Override
    public MainboardViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.mainboard_list , parent , false);
        return new MainboardViewHolder(view);
    }

    @Override
    protected void onBindViewHolder(MainboardViewHolder holder, int postion, Mainboard mainboard) {
        String mb_id = mainboard.mb_id;
        mRef.child( mb_id + "/mb_auther").addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String mb_author = dataSnapshot.getValue().toString();
                mReference.child(mb_author + "/user_fname").addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        String user_fname = dataSnapshot.getValue().toString();
                        Log.e("user_fname" , dataSnapshot.getValue().toString());
                        holder.setAuthor(user_fname);
                    }
                }
            }
        };
    }
}

回答1:


Straight method

1.First get the mb_auther value using addListenerForSingleValueEvent listener

2.Then using that mb_auther value get the user_fname

  mRef.child("id/mb_auther").addListenerForSingleValueEvent(new ValueEventListener() { //Your case id is -KrHOUwrsBbXHvUaOTIu
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String mb_auther = dataSnapshot.getValue().toString();
            mReference.child(mb_auther + "/user_fname").addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    String user_fname = dataSnapshot.getValue().toString()
                    Log.e("user_fname", user_fname);
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });


来源:https://stackoverflow.com/questions/46923989/android-firebase-ui-get-data-from-other-table

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!