更改从Firebase PopulateView检索的RecyclerView中的项目的排列顺序

时间:2017-07-29 14:21:59

标签: java android firebase collections android-recyclerview

我正在创建一个聊天应用程序我遇到问题交换RecyclerView中的项目的订单列表哪个是从Firebase中检索的populateView方法 这是我的聊天列表活动

    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();

所以这就是我如何填充我的RecyclerView而我无法使用

交换其中的元素
     Collections.swap(List,2,3);

函数因为我在FirebaseRecyclerAdapter中没有列表来使用和交换项目,当我使用只传递一个元素的ArrayAdapter和Arraylist时它工作正常。

1 个答案:

答案 0 :(得分:1)

您可以使用getSnapshots获取列表项。这返回FirebaseArray。如果要在Collections.swap中使用,可以使用:

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);