搜索 Firestore 查询不在 RecycleView 中显示数据

mou*_*izi 5 java android firebase android-recyclerview google-cloud-firestore

这是我在 Firestore 中的数据 我想显示这个名称“mouad”

这是我的代码

公共类 SearchActivity 扩展 AppCompatActivity {

    私有RecyclerView mMainList;
    私有 FirebaseFirestore mFirestore;
    私有列表 usersList;
    私有 CustomAdapter 适配器Re;
    编辑文本编辑文本;
    按钮 btnSearch;
    字符串名称;

    @覆盖
    protected void onCreate(Bundle savingInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search_firebase);

        mFirestore = FirebaseFirestore.getInstance();


        editText = (EditText) findViewById(R.id.search);
        btnSearch = (按钮) findViewById(R.id.btn);

        用户列表 = 新的 ArrayList();
        adapterRe = new CustomAdapter(getApplicationContext(), usersList);

        mMainList = (RecyclerView) findViewById(R.id.recyvle);
      // mMainList.setHasFixedSize(true);
     // mMainList.setLayoutManager(new LinearLayoutManager(this));
     // mMainList.setAdapter(adapterRe);


        btnSearch.setOnClickListener(new View.OnClickListener() {
            @覆盖
            公共无效onClick(查看v){
                搜索用户Firebase();
            }
        });



    }

    私人无效SearchUserFirebase(){
        名称 = editText.getText().toString();
        if(!name.isEmpty()){

            查询 query = mFirestore.collection("Movies").orderBy("name" ).startAt(name).endAt(name + "\uf8ff");
            query.addSnapshotListener(new EventListener() {
               @覆盖
               公共无效 onEvent(QuerySnapshot documentSnapshots,FirebaseFirestoreException e){

                   如果(e!= null){

                       Log.d("TAG", "错误:" + e.getMessage());
                   }
                   ArrayList adsList = new ArrayList();

                   for(DocumentChange 文档:documentSnapshots.getDocumentChanges()){

                       if (doc.getType() == DocumentChange.Type.ADDED){

                           电影用户 = doc.getDocument().toObject(Movies.class);
                           usersList.add(用户);
                           适配器Re.notifyDataSetChanged();

                       }
                   }

                   Log.d("TAG", "搜索的记录数为 " + adsList.size());

               }
           });

        }
    }
    }

这是错误

错误

Ale*_*amo 2

通常,当您尝试从后台线程而不是从“主”线程(例如在onCreate()方法内部)设置适配器时,会出现此错误。

如果您尝试从“延迟”方法(如方法内部)设置适配器onEvent(),则始终会出现此警告。

要解决此问题,请将适配器的创建移至同一线程中,并从 for 循环中获取以下代码行。

adapterRe.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)