方法一:
除非您创建自己的类来扩展 FirebaseListAdapter 并重写 getItem() 方法,否则无法使用当前代码对数据重新排序。这是一种很棒且简单的方法(由 Monet_z_Polski 提供)。到目前为止,我使用了同样的技巧,取得了完美的结果。
public abstract class ReverseFirebaseListAdapter<T> extends FirebaseListAdapter<T> {
public ReverseFirebaseListAdapter(Activity activity, Class<T> modelClass, int modelLayout, Query ref) {
super(activity, modelClass, modelLayout, ref);
}
public ReverseFirebaseListAdapter(Activity activity, Class<T> modelClass, int modelLayout, DatabaseReference ref) {
super(activity, modelClass, modelLayout, ref);
}
@Override
public T getItem(int position) {
return super.getItem(getCount() - (position + 1));
}
然后,当您创建适配器时,您可以使用新的自定义类来修改发送到列表的每个项目的起始位置。
方法二:
另一种方法是将数据读入您的应用程序(可能读入 ArrayList 或类似的内容),并在使用正确排序的数据填充列表之前在客户端上重新排序数据。这就像将数据读入 ArrayList 一样简单,每个项目的起始索引都为 0。就像是chatRoomList.add(0, nextChatRoom);
例如。这样,当您在屏幕上填充列表时,它将按照您想要的顺序排列。
还有其他方法涉及制作自定义适配器,但我个人认为这会比这两种方法更复杂。第一个是我最喜欢的。