FirestoreはRecycleView内のデータを示していないクエリ検索します

mouad ZIZI:

これはFirestoreで私のデータである 私は、この名前「mouad」を表示したいです

これは私のコードです

ublicクラスSearchActivityはAppCompatActivity {延び

    プライベートRecyclerView mMainListと、
    プライベートFirebaseFirestore mFirestore。
    プライベートリストUSERSLIST。
    プライベートCustomAdapter adapterRe。
    EditText EDITTEXT; 
    ボタンbtnSearch; 
    文字列の名前。

    @Overrideは、
    ボイドのonCreate(バンドルsavedInstanceState)を保護{ 
        super.onCreate(savedInstanceState)。
        setContentView(R.layout.activity_search_firebase)。

        mFirestore = FirebaseFirestore.getInstance()。


        EDITTEXT =(のEditText)findViewById(R.id.search)。
        btnSearch =(ボタン)findViewById(R.id.btn)。

        USERSLIST =新しいArrayListを();
        adapterRe =新しいCustomAdapter(getApplicationContext()、USERSLIST)。

        mMainList =(RecyclerView)findViewById(R.id.recyvle)。
      // mMainList.setHasFixedSize(真の); 
     // mMainList.setLayoutManager(新しいLinearLayoutManager(この)); 
     // mMainList.setAdapter(adapterRe)。


        btnSearch.setOnClickListener(新しいView.OnClickListener(){ 
            @Override 
            ます。public void onClickの(ビューV){ 
                SearchUserFirebase(); 
            } 
        }); 



    } 

    プライベートボイドSearchUserFirebase(){ 
        名前= editText.getText()のtoString()。
        (もし!name.isEmpty()){

            クエリのクエリ= mFirestore.collection( "作品")のOrderBy( "名前").startAt(名).endAt(名前+ "\ uf8ff")。
            query.addSnapshotListener(新しいイベントリスナー(){ 
               @Override 
               ます。public voidのonEvent(QuerySnapshotのdocumentSnapshots、FirebaseFirestoreException電子){ 

                   場合(E = NULL){!

                       Log.d( "TAG"、 "エラー:" + e.getMessage()); 
                   } 
                   ArrayListのadsList =新しいArrayListを()

                   のための(DocumentChangeドキュメント:documentSnapshots.getDocumentChanges()){ 

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

                           作品ユーザー= doc.getDocument()toObject(Movies.class)。
                           usersList.add(ユーザー); 
                           adapterRe.notifyDataSetChanged(); 

                       } 
                   } 

                   Log.d( "TAG"、+ adsList.size "検索のレコードのNOがあります"())。

               } 
           })。

        } 
    } 
    }

これは誤りであります

エラー

アレックス・マモ:

あなたがバックグラウンドスレッドからとアダプタを設定しようとしているとき、通常、このエラーが表示されない(内部例えば「メイン」スレッドからonCreate()メソッド)。

あなたの中のような「遅延」方式から、アダプタを設定しようとしている場合はonEvent()この方法は、この警告は常に表示されます。

この問題を解決するには、同じスレッド内のアダプタの作成を移動し、そのループの外に次のコード行を取得します。

adapterRe.notifyDataSetChanged();

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=208213&siteId=1