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.