Android 使用FirebaseRecyclerAdapter在RecyclerView的结尾/开头添加项目 cmdr=(RecyclerView)findViewById(R.id.cmdr); mLayoutManager=新的LinearLayoutManager(InterR.this); mLayoutManager.setReverseLayout(true); mLayoutManager.setStackFromEnd(true); Query q=FirebaseDatabase.getInstance().getReference().child(“com”).orderByChild(“id”).equalTo(idrc.getText().toString()); mAdapter4=新FirebaseRecyclerAdapter(Cmd.class,R.layout.item_Cmd_R,mViewHolder.class, q){ @凌驾 受保护的void populateViewHolder(mViewHolder viewHolder,Cmd型号,int位置){ if(this.getRef(position).getKey()!=null) {viewHolder.idc.setText(this.getRef(position.getKey());} if(model.getAddress()!=null) {viewHolder.adc.setText(model.getAddresse());} } }; registerAdapterDataObserver(新的RecyclerView.AdapterDataObserver() { @凌驾 已插入的公用项目(int positionStart、int ItemCount){ super.emrangeinserted(positionStart,ItemCount); int roomCount=mAdapter4.getItemCount(); int lastVisiblePosition=mLayoutManager.findLastCompletelyVisibleItemPosition(); 如果(lastVisiblePosition==-1 | |(positionStart>=(roomCount-1)和&lastVisiblePosition==(positionStart-1))){ cmdr.scrollToPosition(位置开始); } } }); cmdr.setLayoutManager(mLayoutManager); cmdr.setAdapter(mAdapter4);

Android 使用FirebaseRecyclerAdapter在RecyclerView的结尾/开头添加项目 cmdr=(RecyclerView)findViewById(R.id.cmdr); mLayoutManager=新的LinearLayoutManager(InterR.this); mLayoutManager.setReverseLayout(true); mLayoutManager.setStackFromEnd(true); Query q=FirebaseDatabase.getInstance().getReference().child(“com”).orderByChild(“id”).equalTo(idrc.getText().toString()); mAdapter4=新FirebaseRecyclerAdapter(Cmd.class,R.layout.item_Cmd_R,mViewHolder.class, q){ @凌驾 受保护的void populateViewHolder(mViewHolder viewHolder,Cmd型号,int位置){ if(this.getRef(position).getKey()!=null) {viewHolder.idc.setText(this.getRef(position.getKey());} if(model.getAddress()!=null) {viewHolder.adc.setText(model.getAddresse());} } }; registerAdapterDataObserver(新的RecyclerView.AdapterDataObserver() { @凌驾 已插入的公用项目(int positionStart、int ItemCount){ super.emrangeinserted(positionStart,ItemCount); int roomCount=mAdapter4.getItemCount(); int lastVisiblePosition=mLayoutManager.findLastCompletelyVisibleItemPosition(); 如果(lastVisiblePosition==-1 | |(positionStart>=(roomCount-1)和&lastVisiblePosition==(positionStart-1))){ cmdr.scrollToPosition(位置开始); } } }); cmdr.setLayoutManager(mLayoutManager); cmdr.setAdapter(mAdapter4);,android,firebase,firebase-realtime-database,android-recyclerview,firebaseui,Android,Firebase,Firebase Realtime Database,Android Recyclerview,Firebaseui,我试图用FirebaseRecyclerAdapter检索到的数据填充RecyclerView,它正在工作,但问题是每当添加一个项时,该项都会插入数据库中的相同位置,而不是显示在列表的末尾或顶部,在FirebaseRecyclerAdapter声明中,覆盖getItem()功能 cmdr= (RecyclerView) findViewById(R.id.cmdr); mLayoutManager = new LinearLayoutManager(InterR.this);

我试图用FirebaseRecyclerAdapter检索到的数据填充RecyclerView,它正在工作,但问题是每当添加一个项时,该项都会插入数据库中的相同位置,而不是显示在列表的末尾或顶部,在FirebaseRecyclerAdapter声明中,覆盖getItem()功能

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);
归功于

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