我在Firebase实时数据库的表中获取数据。但是,当有大量数据时,需要几分钟才能加载。例如,500个数据需要5-6分钟。我该如何解决这个问题呢?
谢谢,致以最好的问候。
private void initCustomAdapter() {
mPeriodsReference.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
mPeriodsReference.keepSynced(true);
OnlinePeriod period = dataSnapshot.getValue(OnlinePeriod.class);
dataList.add(period);
pageNum = 1;
Collections.reverse(dataList);
resfreshListView();
Log.d("TAG","list coming" + dataList);
}
@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) {
throw error.toException();
}
});
mPeriodsRecycler.setLayoutManager(new GridLayoutManager(mContext, 1));//
mPeriodsRecycler.addItemDecoration(new GridSpacingItemDecoration(Utils.convertDPToPixel(mContext, 3)));
mTrackAdapter = new TrackListAdapter(mContext, filterDataList);//new ArrayList<CategoryModel>()
mPeriodsRecycler.setAdapter(mTrackAdapter);
}
发布于 2021-02-14 01:06:21
通过查看给定的代码,我可以推断出,首先是将数据加载到列表dataList
中,然后使用Collections.reverse(dataList);
反转整个列表,这是一个开销很大的操作。
因此,一种解决方法是创建自己的反转函数来反转数组列表,因为Collections类提供的默认.reverse()
效率不是很高。
您可以尝试使用下面的代码来反转list in-place (使用相同的ArrayList,从而使其更高效):
public ArrayList<Integer> revArrayList(ArrayList<Integer> list)
{
for (int i = 0; i < list.size() / 2; i++) {
Integer temp = list.get(i);
list.set(i, list.get(list.size() - i - 1));
list.set(list.size() - i - 1, temp);
}
return list;
}
https://stackoverflow.com/questions/66187572
复制相似问题