如何在我的firebase数据库中搜索数据[Android]

时间:2017-06-30 09:17:58

标签: android firebase firebase-realtime-database

我想用editText做一个“搜索栏”,应用程序的目标是用户输入一个单词,然后我检查我的firebase数据库是否存在它的单词并且我是否在文本视图中显示它。

我的数据库:enter image description here

和我的代码(我想比较用户的输入和字段“nomP”的结果):

public class recherche extends AppCompatActivity {
    DatabaseReference bdd_Produit;
    List<Produit> lesP;
    EditText edtRecherche;
    TextView txtResultat;
    Button btnCherche;
    Button acc;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_recherche);
        edtRecherche = (EditText) findViewById(R.id.edtRecherche);
        btnCherche = (Button) findViewById(R.id.btnCherche);
        acc = (Button) findViewById(R.id.btnAcc);

        bdd_Produit = FirebaseDatabase.getInstance().getReference("produit");

        acc.setText("Accueil");
        btnCherche.setText("valide");

        //initialisation var
        lesP = new ArrayList<>();

        btnCherche.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            bdd_Produit.orderByChild("nomP").equalTo(edtRecherche.getText().toString()).addListenerForSingleValueEvent(
                    new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            //data will be available on dataSnapshot.getValue();
                            txtResultat.setText(dataSnapshot.getValue().toString());
                        }

                        @Override
                        public void onCancelled(DatabaseError databaseError) {

                        }
                    });
        }
    });

    }

提前感谢您的帮助,如果您需要其他信息,我会忘记我在这里! :)

1 个答案:

答案 0 :(得分:0)

您需要为Produit创建模型类

bdd_Produit.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
            if (!TextUtils.isEmpty(edtRecherche.getText())){
                if (snapshot.getValue(Produit.class).getNomP().equals(edtRecherche.getText().toString()))
                    //produit founded
                else
            }
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});