猿问

通过编辑文本过滤结果

在我的电脑中,ExploreFragment.java我有一个EditText,它基本上允许用户搜索存储在Firebase实时数据库中的国家/地区名称。我要实现的是,当用户在EditText中键入内容,然后在键盘上按“提交”时,它将进行查询,以检索每个在其名称中键入了字符串的国家,然后将其重定向到我的片段FilteredResultsFragment.java,显示检索到的国家/地区的名称。我的片段有一个带有适配器的回收站视图。我还没有做到这一点。我需要检索一个带有URL的列表和一个带有名称的列表。查询应如下所示:


FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();

Log.d("TAMANHO","size = "+paisEscolhido.size());

for (int i = 0; i<paisEscolhido.size(); i++) {

    Log.d("CONTINETNE","size = "+paisEscolhido.get(i));

    DatabaseReference paisNomeContinentes = mDatabase.getReference().child("paises");

    Query queries = paisNomeContinentes.orderByChild("Continente").equalTo(paisEscolhido.get(i));


    queries.addListenerForSingleValueEvent(new com.google.firebase.database.ValueEventListener() {

      @Override

      public void onDataChange(@NonNull DataSnapshot dataSnapshot) {


        List<String> imagemPaisList = new ArrayList<>();

        List<String> nomePaisList = new ArrayList<>();

        for (DataSnapshot ds : dataSnapshot.getChildren()) {

            String imagemPais = ds.child("Imagem").getValue(String.class);

            String nomePais = ds.child("Nome").getValue(String.class);

            imagemPaisList.add(imagemPais);

            nomePaisList.add(nomePais);

        }

        int urlCount = imagemPaisList.size();


        //  int randomImage = new Random().nextInt(urlCount);


        for (int i = 0; i < nomePaisList.size(); i++) {


                Integer randomVariavel = new Random().nextInt(urlCount);


                randomImagemPaisList.add(imagemPaisList.get(randomVariavel));

                randomNomePaisList.add(nomePaisList.get(randomVariavel));


        }


富国沪深
浏览 117回答 1
1回答

aluckdog

如果要用于startAt()过滤数据,则还必须使用,endAt()因为startAt()它是查询的起点,而不是过滤器。通过\uf8ff在的搜索字符串后面添加(最后一个unicode字符),您endAt(可以限制查询以仅获取以搜索字符串开头的值:Query&nbsp;queries&nbsp;=&nbsp;paisNomeContinentes.orderByChild("Nome").startAt("Po").endAt("Po"&nbsp;+&nbsp;"\uf8ff");请记住,这只会获取以搜索字符串开头的项目,而不是包含搜索字符串的项目。
随时随地看视频慕课网APP

相关分类

Java
我要回答