简体   繁体   中英

Change the Arrangement order of items in RecyclerView Retrieved From Firebase PopulateView

I am creating an chat App And I am having a problem swapping the order list of the Items in RecyclerView Which is Retrieved from Firebase populateView Method Here is my chatlist Activity

    mAdappyter = new FirebaseRecyclerAdapter<User, CViewHolder>(User.class,R.layout.chatlist,CViewHolder.class,mDatabaseReference) {
        @Override
        protected void populateViewHolder(final CViewHolder viewHolder, User model, final int position) {



            viewHolder.mGroupName.setText(model.getmName());








            mImagesReferences = FirebaseDatabase.getInstance().getReference().child("UPhoto").child(model.getmName());
            mLast = FirebaseDatabase.getInstance().getReference().child("Last").child(model.getmName());
            mTime = FirebaseDatabase.getInstance().getReference().child("TIME").child(model.getmName());





            mImagesReferences.addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {

                    String url = dataSnapshot.getValue().toString();

                    Picasso.with(getApplicationContext()).load(url).into(viewHolder.mPhoto);


                }

                @Override
                public void onChildChanged(DataSnapshot dataSnapshot, String s) {

                }

                @Override
                public void onChildRemoved(DataSnapshot dataSnapshot) {

                }

                @Override
                public void onChildMoved(DataSnapshot dataSnapshot, String s) {

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });



            mTime.addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {


                    String lala = dataSnapshot.getValue().toString();

                    viewHolder.mLastTime.setText(lala);



                }

                @Override
                public void onChildChanged(DataSnapshot dataSnapshot, String s) {

                }

                @Override
                public void onChildRemoved(DataSnapshot dataSnapshot) {

                }

                @Override
                public void onChildMoved(DataSnapshot dataSnapshot, String s) {

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });




            mLast.addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {

                    //  Toast.makeText(getApplicationContext(),dataSnapshot.toString(),Toast.LENGTH_LONG).show();

                    String time = dataSnapshot.getValue().toString();
                    // String last = dataSnapshot.child("mUser").getValue().toString();

                    viewHolder.mMessage.setText(time);





                }

                @Override
                public void onChildChanged(DataSnapshot dataSnapshot, String s) {



                }

                @Override
                public void onChildRemoved(DataSnapshot dataSnapshot) {

                }

                @Override
                public void onChildMoved(DataSnapshot dataSnapshot, String s) {

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });



            viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {



                   String naam = viewHolder.mGroupName.getText().toString();
                    Intent intent = new Intent(getApplicationContext(),MainActivity.class);
                    intent.putExtra("messy",naam);
                    startActivity(intent);






                   // Toast.makeText(getApplication(),""+position,Toast.LENGTH_SHORT).show();



                }
            });



        }
    };



    mListView.setAdapter(mAdappyter);
    mAdappyterbitch.notifyDataSetChanged();

So this is How I populate My RecyclerView And I can't Swap the elements in it using

     Collections.swap(List,2,3);

Functions Beacuse I don't Have a List in FirebaseRecyclerAdapter to use and swap items, It works Fine when i use an ArrayAdapter and Arraylist which passes only one elements.

You can use getSnapshots to get list Items. This return FirebaseArray. If you want to use in Collections.swap you could use:

public List<User> getListSnapshot() {
        List modelList = new ArrayList<>();
        for (User model : super.getSnapshots()) {
            modelList.add(model);
        }

        return modelList;
}

List list = getListSnapshot();

Collections.swap(list,2,3);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM