FirebaseUI RecycleView 搜索不起作用

这是我的SearchGetterSetter.java代码:


package com.me.Admin;


public class SearchGetterSetter {


String fname;


public SearchGetterSetter(String fname) {

    this.fname = fname;

}


public String getFname() {

    return fname;

}


public void setFname(String fname) {

    this.fname = fname;

}

}

这是我的 SearchUserActivity.java 代码


package com.me.Admin;


  import android.support.annotation.NonNull;

  import android.support.v7.app.AppCompatActivity;

  import android.os.Bundle;

  import android.support.v7.widget.LinearLayoutManager;

  import android.support.v7.widget.RecyclerView;

  import android.view.LayoutInflater;

  import android.view.View;

  import android.view.ViewGroup;

  import android.widget.EditText;

  import android.widget.ImageButton;

  import android.widget.TextView;

  import android.widget.Toast;


  import com.firebase.ui.database.FirebaseRecyclerAdapter;

  import com.firebase.ui.database.FirebaseRecyclerOptions;

  import com.google.firebase.FirebaseException;

  import com.google.firebase.database.DatabaseReference;

  import com.google.firebase.database.FirebaseDatabase;

  import com.google.firebase.database.Query;

  import com.infoters.killansfitnessstudio.R;

  public class SearchUserActivity extends AppCompatActivity {

private EditText SearchTxt;

private ImageButton SearchBtn;

private RecyclerView SearchRV;


private DatabaseReference mUserDatabase;


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_search_user);


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

    SearchTxt = findViewById(R.id.SearchUserTxt);

    SearchBtn = findViewById(R.id.SearchUserBtn);

    SearchRV = findViewById(R.id.SearchUserRV);

    SearchRV.setHasFixedSize(true);

    SearchRV.setLayoutManager(new LinearLayoutManager(this));


        }

    });


}

我想从 Firebase 实时数据库中搜索 fname。在搜索按钮上按下我正在调用firebaseUserSearch()方法。


我尝试了几种方法,但对我没有任何作用。我猜我做错了 FirebaseRecycleViewAdapter。我提到了这个。我哪里出错了?


开心每一天1111
浏览 105回答 2
2回答

Helenr

你的这个声明:Query firebaseSearchQuery = mUserDatabase.child("fname");应该Query firebaseSearchQuery = mUserDatabase.orderByChild("fname").equals(searchText);正如我看到您的代码,您没有在查询中使用searchText变量。

MMTTMM

要创建搜索功能,您需要创建一个如下所示的查询:DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();DatabaseReference usersRef = rootRef.child("users");Query query = usersRef.orderByChild("fname").equalTo(searchedText);因此,每次搜索名称时,都应该返回一个新的查询对象。因此,每次您想要过滤新条件时,您都需要:根据新搜索的文本创建一个新查询:Query query = usersRef.orderByChild("name").equalTo(searchedText);将侦听器附加到这个新创建的查询。使用这个新创建的查询的结果创建一个新的适配器,或者使用notifydatasetchanged()方法更新现有的适配器。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java