【问题标题】:Adding items at the end/start of RecyclerView using FirebaseRecyclerAdapter使用 FirebaseRecyclerAdapter 在 RecyclerView 的末尾/开头添加项目
【发布时间】:2017-04-12 03:06:09
【问题描述】:
cmdr= (RecyclerView) findViewById(R.id.cmdr);
        mLayoutManager = new LinearLayoutManager(InterR.this);
        mLayoutManager.setReverseLayout(true);
        mLayoutManager.setStackFromEnd(true);         

Query q= FirebaseDatabase.getInstance().getReference().child("com").orderByChild("id").equalTo(idrc.getText().toString());

                mAdapter4 = new FirebaseRecyclerAdapter<Cmd,mViewHolder>(Cmd.class,R.layout.item_cmd_r,mViewHolder.class,
                        q) {


                    @Override
                    protected void populateViewHolder(mViewHolder viewHolder, Cmd model, int position) {

                        if(this.getRef(position).getKey()!=null)
                        {viewHolder.idc.setText(this.getRef(position).getKey());}


                        if(model.getAddress()!=null)
                        {viewHolder.adc.setText(model.getAdresse());}

                    }

                };
            mAdapter4.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver()
            {


                @Override
                public void onItemRangeInserted(int positionStart, int ItemCount){
                    super.onItemRangeInserted(positionStart,ItemCount);
                    int roomCount = mAdapter4.getItemCount();
                    int lastVisiblePosition = mLayoutManager.findLastCompletelyVisibleItemPosition();
                    if (lastVisiblePosition == -1 || (positionStart >= (roomCount -1) && lastVisiblePosition == (positionStart -1))){
                        cmdr.scrollToPosition(positionStart);
                    }

                }
            });

            cmdr.setLayoutManager(mLayoutManager);
            cmdr.setAdapter(mAdapter4);

我正在尝试使用 FirebaseRecyclerAdapter 检索到的数据填充 RecyclerView,它可以正常工作,但问题是每当添加项目时,项目不会显示在列表的末尾或顶部,而是插入相同的在数据库中的位置

【问题讨论】:

    标签: android firebase firebase-realtime-database android-recyclerview firebaseui


    【解决方案1】:

    在 FirebaseRecyclerAdapter 声明中,覆盖 getItem() 函数。

        @Override
    public User getItem(int position) {
            return super.getItem(getItemCount() - 1 - position);
    }
    

    感谢https://github.com/firebase/FirebaseUI-Android/issues/310#issuecomment-247816246

    【讨论】:

      猜你喜欢
      • 2015-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多