2016-12-16 55 views

回答

0

实现此目的的一种解决方案是在开始搜索之前将数据从实时数据库加载到ArrayList中。

  1. 所以要做到这一点,首先需要检查Firebase侦听器 何时完成从数据库中检索数据。
    Firebase侦听器不会按顺序执行,并且ValueListener始终最后执行。因此,您可以执行一些操作,例如通过ChildListener检索数据,然后执行到ValueListener以确保数据完全检索rootRef.addListenerForSingleValueEvent()
  2. 稍后,当您的数据被检索并存储在数组列表中时,您可以按照this添加搜索功能

    希望它有帮助!

0

首先在build.gradle中为图像视图添加firebase和glide或其他依赖关系所需的依赖关系。 创建树参考如下

mUserDatabase = FirebaseDatabase.getInstance().getReference("YourTreeRootNameHere"); 

传递字符串在文本字段中有onTextChanged方法如下功能firebaseUserSearch。根据您的代码对以下功能进行必要的更改。

private void firebaseUserSearch(String searchText) { 

    Query firebaseSearchQuery = mUserDatabase.orderByChild("sName").startAt(searchText).endAt(searchText + "\uf8ff"); 

    FirebaseRecyclerAdapter<Users, SearchActivity.UsersViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Users, SearchActivity.UsersViewHolder>(

      Users.class, 
      R.layout.list_layout, 
      SearchActivity.UsersViewHolder.class, 
      firebaseSearchQuery 

    ) { 
     @Override 
     protected void populateViewHolder(SearchActivity.UsersViewHolder viewHolder, final Users model, final int position) { 


      viewHolder.setDetails(getApplicationContext(), model.getName(), model.getPlace(), model.getImage()); 



     } 
    }; 

    mResultList.setAdapter(firebaseRecyclerAdapter); 

} 


// View Holder Class 

public static class UsersViewHolder extends RecyclerView.ViewHolder { 

    View mView; 

    public UsersViewHolder(View itemView) { 
     super(itemView); 

     mView = itemView; 

    } 

    public void setDetails(Context ctx, String userName, String userStatus, String userImage){ 

     TextView user_name = (TextView) mView.findViewById(R.id.name_text); 
     TextView user_status = (TextView) mView.findViewById(R.id.status_text); 
     ImageView user_image = (ImageView) mView.findViewById(R.id.profile_image); 


     user_name.setText(userName); 
     user_status.setText(userStatus); 

     Glide.with(ctx).load(userImage).into(user_image); 


    } 




} 

为recyclerView创建布局并定义数据模型类。例如,这个函数使用如下所示的Users.class。

public class Users { 

public String name, image, place; 

public Users(){ 

} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getImage() { 
    return image; 
} 

public void setImage(String image) { 
    this.image = image; 
} 

public String getPlace() { 
    return place; 
} 

public void setPlace(String status) { 
    this.place = status; 
} 

public Users(String name, String image, String place) { 
    this.name = name; 
    this.image = image; 
    this.place = place; 
} 
} 
相关问题