我有一个Android应用程序,其中包含一个带有firebase选项的搜索并使用我正在使用的api进行搜索,api需要花费几秒钟的时间在屏幕上打印数据,而firebase则需要几分钟才能打印数据,而且速度很慢查询数据库
这是我的代码:
public void firebaseSearch(String name) {
mFirebaseSearchList.clear();
mSearchLoading.setVisibility(View.VISIBLE);
mFirebaseSearchAdapter.setData(new ArrayList<_Release>());
mDatabase.child("releases")
.child(mRegion)
.child("data").orderByChild("game/search_name").startAt(name.toLowerCase())
.endAt(name.toLowerCase()+"\uf8ff")
.limitToFirst(10)
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
mSearchLoading.setVisibility(View.GONE);
if (dataSnapshot.hasChildren()) {
for (DataSnapshot data : dataSnapshot.getChildren()) {
_Release release = data.getValue(_Release.class);
if (release != null) {
mFirebaseSearchList.add(release);
mFirebaseSearchAdapter.notifyDataSetChanged();
}
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
mSearchLoading.setVisibility(View.GONE);
}
});
}
侦听器设置为onTextChange
mGameSearchView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
mGameSearchView.showSearch();
mGameSearchView.requestFocus();
if (currentSearchId == 2) {
apiSearch(query);
}
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
if (currentSearchId == 1) {
firebaseSearch(newText);
}
return true;
}
});