首页 文章

过滤查询以填充FirebaseRecyclerAdapter

提问于
浏览
3

目前还不清楚如何使用自定义查询填充FirebaseRecyclerAdapter .

  • 定义参考 . 这里: DatabaseReference ref = mDatabase.getReference().child("users");

  • 将其发送到适配器initAdapter(ref);

  • 定义查询并设置侦听器 . 这样对吗?

mAdapter = new FirebaseRecyclerAdapter<User, UserHolder>(User.class,  R.layout.user_row_layout, UserHolder.class, ref) {

        @Override
        protected void populateViewHolder(final UserHolder viewHolder, final User model, int position) {

            Query query = ref.orderByChild("group").equalTo(uid);
            query.addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                    viewHolder.setName(model.getName());
                    viewHolder.setStatus(getStatus(model.getStatus()));
                }

                // ...
            };

仍显示用户的所有数据 . 只需要根据uid进行过滤 . 有线索吗?

2 回答

  • 0

    对于那些可能试图让事情变得过于复杂或者晚上工作的人来说,这里有解决方案:

    mAdapter = new FirebaseRecyclerAdapter<User, UserHolder>(
                   User.class,  
                   R.layout.user_row_layout, 
                   UserHolder.class,
                   ref.orderByChild("group").equalTo(uid)
    ) {
        @Override
        protected void populateViewHolder(final UserHolder viewHolder, final User model, int position) {
    
                    viewHolder.setName(model.getName());
                    viewHolder.setStatus(getStatus(model.getStatus()));
                }
    
                // ...
            };
    

    潮!

  • 3

    一个简单的例子,我显示所有用户的排名列表:

    FirebaseRecyclerAdapter<UserData,RankListViewHolder> adapter = new FirebaseRecyclerAdapter<UserData, RankListViewHolder>
                    (
               UserData.class,
               R.layout.rank_item,
               RankListViewHolder.class,
               userRef.child("users").getRef() //--Set here your query
                    )
            {
                @Override
    protected void populateViewHolder(RankListViewHolder viewHolder, UserData model, int position)
                {
                    viewHolder.tvPos.setText(""+position+"º");
                    viewHolder.userId = model.getId();
                }
            };
    

相关问题