将数据从Firestore馈送到回收者视图

时间:2020-08-15 04:56:52

标签: android firebase search android-recyclerview searchview

我正在实现一个搜索页面。所以OnQuerySubmit(),我想加载与用户输入匹配的数据。 这是我在用户提交查询时调用的方法。

public void search(String query) {
            Log.d(TAG, query);

            Log.d(TAG, "getting laborers");
            FirebaseFirestore.getInstance()
                    .collection("skills")
                    .orderBy("name")
                    .startAt(query.trim())
                    .endAt(query.trim() + "\uf8ff")
                    .get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        String laborID;
                        labors.clear();
                        for (QueryDocumentSnapshot document : task.getResult()) {
                            Log.d(TAG, document.getId() + " => " + document.getData());
                            laborID = document.get("laborID").toString();
                            FirebaseFirestore.getInstance().collection("users")
                                    .document(laborID).get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
                                @Override
                                public void onSuccess(DocumentSnapshot document) {
                                    String id;
                                    String name;
                                    
                                    LaborM tmp = new LaborM(id, name);
                                    if (document.contains("profile"))
                                        tmp.setProfileURL(document.get("profile").toString());
                                    labors.add(tmp);
                                }
                            });
                        }
                        Toast.makeText(getApplicationContext(),labors.size()+"",Toast.LENGTH_LONG).show();
                        //I have called the notifyDataSetChange() here in updateLabors(labors)
                        laborsRecycleAdapter.updateLabors(labors);
                    }
                }
            });
        }

但是无论用户查询什么,有时回收者视图都不会显示任何内容。尽管有一些与用户查询匹配的数据。但是当搜索视图再次成为焦点时,回收者视图将显示结果。 我已经烤过劳方arraylist的大小,它总是显示0 ??。 我希望搜索完成后立即在回收者视图中显示数据。有人可以帮助我吗? 预先感谢。

0 个答案:

没有答案