在我的电脑中,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)); }
1 回答
aluckdog
TA贡献1847条经验 获得超7个赞
如果要用于startAt()
过滤数据,则还必须使用,endAt()
因为startAt()
它是查询的起点,而不是过滤器。通过\uf8ff
在的搜索字符串后面添加(最后一个unicode字符),您endAt(
可以限制查询以仅获取以搜索字符串开头的值:
Query queries = paisNomeContinentes.orderByChild("Nome").startAt("Po").endAt("Po" + "\uf8ff");
请记住,这只会获取以搜索字符串开头的项目,而不是包含搜索字符串的项目。
添加回答
举报
0/150
提交
取消