如何解决Android Studio:使用Firebase数据库查询用户数据需要花费一些时间才能加载
我有一个Firebase实时数据库,其中包含具有以下结构的用户数据:
AppName
Users
User1
address:
current_loc:
dp:
homeloc:
loc:
name:
phone:
username:
User2
address:
current_loc:
dp:
homeloc:
loc:
name:
phone:
username:
现在,在应用程序中,我使用了一个搜索视图,该视图接受了这样的查询,
public boolean onQueryTextChange(String s) {
if(s!=null&&!s.isEmpty()&&!s.equals(" ")) {
searchQ(s);
}
else {
resultList.setAdapter(new SearchAdapter(new ArrayList<SearchUsers>()));
}
return false;
}
});
我将用户数据放在列表中,然后与搜索查询进行比较。 这是我填充列表的方式:
@Override
protected void onStart(){
super.onStart();
if(searchData!=null){
searchData.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
list = new ArrayList<>();
for(DataSnapshot ds : dataSnapshot.getChildren()){
list.add(ds.getValue(SearchUsers.class));
SearchAdapter SA = new SearchAdapter(list);
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(SearchFamily.this,"Error : "+databaseError.getMessage(),Toast.LENGTH_SHORT).show();
}
});
}
}
SearchQ方法,
private void searchQ(String str){
lav.setVisibility(View.INVISIBLE);
i = getIntent();
i.getExtras();
Usern = i.getStringExtra("usr");
ArrayList<SearchUsers> Susers = new ArrayList<>();
for(SearchUsers obj:list){
if(!obj.getUsername().contains(Usern))
if(obj.getUsername().toLowerCase().contains(str) || obj.getName().toLowerCase().contains(str.toLowerCase())) {
Susers.add(obj);
}
}
SearchAdapter newSAdapter = new SearchAdapter(Susers);
if(newSAdapter.getItemCount()==0){
lav.setVisibility(View.VISIBLE);
lav.playAnimation();
}
resultList.setAdapter(newSAdapter);
}
修改1: 适配器带有名称,用户名,位置,dp(配置文件图片),homeloc值。
此完整过程需要2-3秒才能加载。我目前只有3-4个用户。有没有最佳的搜索方式?如果用户群增加到1000+左右,哪个是更好的解决方案?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。