我正在创建一个聊天应用程序我遇到问题交换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时它工作正常。
答案 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);