java - Firebase 搜索无法显示结果

标签 java android

我想在我的应用上基于 Firebase 制作搜索数据。我已按照互联网上的说明进行搜索 Firebase。 它没有显示错误,但是当我单击搜索按钮时,我的回收 View 是空的,没有显示数据。

Here is my code:

     btnSearch.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
             String searchText = search_cust.getText().toString();
             firebaseCustSearch(searchText);
         }
     });

This is my firebase search method

private void firebaseCustSearch(String searchText) {

    Query firebaseSearchQuery = databaseCustomer.orderByChild("custName").startAt(searchText).endAt(searchText + "\uf8ff");

    FirebaseRecyclerOptions customerOptions = new FirebaseRecyclerOptions.Builder<Customer>()
            .setQuery(firebaseSearchQuery, Customer.class).build();

    adapter =   new FirebaseRecyclerAdapter<Customer, CustomerList.ViewHolder>(customerOptions) {
        @Override
        protected void onBindViewHolder(@NonNull CustomerList.ViewHolder holder, int position, @NonNull Customer model) {
            holder.setname(model.getCustName());
            holder.setaddress(model.getCustAddress());
            Toast.makeText(CRUDCustomer.this, model.custName,Toast.LENGTH_SHORT).show();
        }

        @NonNull
        @Override
        public CustomerList.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            return null;
        }
    };

    listViewCustomer.setAdapter(adapter);
    listViewCustomer.setLayoutManager(new LinearLayoutManager(getApplicationContext()));

}

ViewHolder

@Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        Customer customer = customerList.get(position);

    holder.textName.setText(customer.getCustName());
    holder.textAddress.setText(customer.getCustAddress());
    holder.textPhone.setText(customer.getCustPhone());

}

public class ViewHolder extends RecyclerView.ViewHolder{
    public TextView textName ;
    public TextView textAddress;
    public TextView textPhone ;

    public ViewHolder(@NonNull View view){
        super(view);
        this.textName = (TextView)view.findViewById(R.id.cust_name);
        this.textAddress = (TextView)view.findViewById(R.id.cust_address);
        this.textPhone = (TextView)view.findViewById(R.id.cust_phone);
    }

    public void setname(String name){

        textName.setText(name);

    }
    public void setaddress(String address){
        textAddress.setText(address);
    }
}

最佳答案

private void search(String text) { List filterdNames = new ArrayList<>(); for (Modelclass s : modelclass) {

        if (s.getname.contains(text)) {

            search.add(s);
        }
    }

    //calling a method of the adapter class and passing the filtered list
    sampleAdapter.filterList(filterdNames);
}

关于java - Firebase 搜索无法显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60200466/

相关文章:

java - 刷新GWT开发中的后端

java - 列出jshell中所有活跃的方法

java - 尝试运行 Sagan spring.io 项目 java.lang.IllegalAccessError 时出错

android - 失败:生成失败,发生异常。在volley\bintray.gradle中

java - 如何确保我的 Android 应用程序不会同时访问文件?

java - Android 中 ArrayList 的问题

java - 复制外部硬盘

java - 检索 AJAX 结果时出现问题

android - SYSTEM_ALERT_WINDOW - 如何在 Android 6.0 和 targetSdkVersion 23 上自动获得此权限

android - 如何列出Android中的所有媒体?