FireStore Recyclerview e / RecyClerview:アダプタが接続されていません。レイアウトをスキップします -- android フィールド と android-recyclerview フィールド と google-cloud-firestore フィールド と firebaseui フィールド 関連 問題

Firestore RecyclerView E/RecyclerView: No adapter attached; skipping layout












0
vote

問題

日本語

FireStore Recyclerviewを使用しますが、私のリストは表示されず、LogCatは

E / RecyClerview:アダプタが接続されていません。レイアウトをスキップする

以前は、スピナーリスナーにこれを作成しましたが、このコードのようにするとエラーが発生し、リストが表示されません。

java.class

の名前変更についてすみません

アダプタ用JURNALADAPTER. モデルクラス

用のjurnal_sikap_adapter <事前> <コード> public class detail_siswa extends AppCompatActivity { private FirebaseFirestore firebase; private String documentid; private String pre_pengetahuan,post_pengetahuan,sikap,keterampilan,deskripsi,designpattern,coverbuku,kelasid; ArrayList<String> pretest,posttest; ArrayList<Float> pretest_int,posttest_int; private LineChart pretestgraph,posttestgraph; private Double skorketerampilan,skordesignpattern,skorcover; private TextView skoreterendah,skortertinggi,skorterendah2,skorterrtinggi2,designpatterntv,coverbukutv,ratatv,sikaptv; private CollectionReference doc; private RecyclerView recyclerViewx; private jurnaladapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail_siswa); firebase = FirebaseFirestore.getInstance(); skoreterendah = findViewById(R.id.skorterendah); skortertinggi = findViewById(R.id.skortertinggi); skorterendah2 = findViewById(R.id.postskorterendah); skorterrtinggi2 = findViewById(R.id.postskortertinggi); designpatterntv = findViewById(R.id.designpatterntampil); coverbukutv = findViewById(R.id.coverbukutampil); ratatv = findViewById(R.id.rataratatampil); sikaptv = findViewById(R.id.sikaptampil); pretestgraph = (LineChart) findViewById(R.id.pretest_graph); posttestgraph =(LineChart) findViewById(R.id.posttest_graph); recyclerViewx = (RecyclerView) findViewById(R.id.recyclerview_jurnalsikapxml); TextView textView = (TextView) findViewById(R.id.namasiswa_tampil); Intent i = getIntent(); String nama = i.getStringExtra("nama"); kelasid = i.getStringExtra("kelasid"); textView.setText(nama +" : "+kelasid); final LinearLayoutManager layoutManager = new LinearLayoutManager(this); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); recyclerViewx.setLayoutManager(layoutManager); firebase.collection("kelas").document(kelasid).collection("siswa").whereEqualTo("nama",nama) .get() .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { @Override public void onComplete(@NonNull Task<QuerySnapshot> task) { if(task.isSuccessful()) { if (task.getResult().size() > 0) { for (QueryDocumentSnapshot documentSnapshot : task.getResult()) { documentid = documentSnapshot.getId(); kelas kelas = documentSnapshot.toObject(kelas.class); pre_pengetahuan = kelas.getPre_pengetahuan(); post_pengetahuan = kelas.getPost_pengetahuan(); sikap = kelas.getSikap(); keterampilan = kelas.getKeterampilan(); deskripsi = kelas.getDeskripsi(); designpattern = kelas.getDesignpattern(); coverbuku = kelas.getCoverbuku(); } runOnUiThread(new Runnable() { @Override public void run() { setuprecycleview(); } }); convertntampil(); } } } }); } private void setuprecycleview() { Query query = firebase.collection("kelas").document(kelasid).collection("siswa").document(documentid).collection("jurnalsikap").orderBy("butir", Query.Direction.ASCENDING); FirestoreRecyclerOptions<jurnal_sikap_adapter> options = new FirestoreRecyclerOptions.Builder<jurnal_sikap_adapter>() .setQuery(query, jurnal_sikap_adapter.class).build(); adapter = new jurnaladapter(options); recyclerViewx.setHasFixedSize(true); recyclerViewx.setAdapter(adapter); adapter.startListening(); }

私は私のアダプターを編集しました。たぶん私は私のアダプターの中で何か問題がある:

<事前> <コード> public class jurnaladapter extends FirestoreRecyclerAdapter<jurnal_sikap_adapter, jurnaladapter.jurnalholder> { /** * Create a new RecyclerView adapter that listens to a Firestore Query. See {@link * FirestoreRecyclerOptions} for configuration options. * * @param options */ public jurnaladapter(@NonNull FirestoreRecyclerOptions<jurnal_sikap_adapter> options) { super(options); } @Override protected void onBindViewHolder(@NonNull jurnalholder jurnalholder, int i, @NonNull jurnal_sikap_adapter jurnal_sikap_adapter) { jurnalholder.catatantv.setText(jurnal_sikap_adapter.getCatatan()); jurnalholder.butirtv.setText(jurnal_sikap_adapter.getButir()); } @NonNull @Override public jurnalholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.jurnal_sikap_model,parent,false); return new jurnalholder(v); } class jurnalholder extends RecyclerView.ViewHolder{ TextView catatantv; TextView butirtv; public jurnalholder(@NonNull View itemView) { super(itemView); catatantv = (TextView) itemView.findViewById(R.id.catatansikap); butirtv = (TextView) itemView.findViewById(R.id.butirSikap); } } }

これは私の銃撃戦です イメージの説明を入力しますここで ENTER IMART記述ここで ENTER IMART記述ここで この私のモデルクラス このモデルクラス

英語

I use Firestore RecyclerView but my list does not show up and my logcat says

E/RecyclerView: No adapter attached; skipping layout

Previously, I made this for a spinner listener and it worked, but when I make it like in this code, it causes an error and does not show the list.

I am sorry about renaming java.class

jurnaladapter for adapter jurnal_sikap_adapter for model class

public class detail_siswa extends AppCompatActivity {      private FirebaseFirestore firebase;     private String documentid;     private String pre_pengetahuan,post_pengetahuan,sikap,keterampilan,deskripsi,designpattern,coverbuku,kelasid;     ArrayList<String> pretest,posttest;     ArrayList<Float> pretest_int,posttest_int;     private LineChart pretestgraph,posttestgraph;     private Double skorketerampilan,skordesignpattern,skorcover;     private TextView skoreterendah,skortertinggi,skorterendah2,skorterrtinggi2,designpatterntv,coverbukutv,ratatv,sikaptv;     private CollectionReference doc;     private RecyclerView recyclerViewx;     private jurnaladapter adapter;      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_detail_siswa);          firebase = FirebaseFirestore.getInstance();           skoreterendah = findViewById(R.id.skorterendah);         skortertinggi = findViewById(R.id.skortertinggi);         skorterendah2 = findViewById(R.id.postskorterendah);         skorterrtinggi2 = findViewById(R.id.postskortertinggi);         designpatterntv = findViewById(R.id.designpatterntampil);         coverbukutv = findViewById(R.id.coverbukutampil);         ratatv = findViewById(R.id.rataratatampil);         sikaptv = findViewById(R.id.sikaptampil);         pretestgraph = (LineChart) findViewById(R.id.pretest_graph);         posttestgraph =(LineChart) findViewById(R.id.posttest_graph);         recyclerViewx = (RecyclerView) findViewById(R.id.recyclerview_jurnalsikapxml);          TextView textView = (TextView) findViewById(R.id.namasiswa_tampil);         Intent i = getIntent();         String nama = i.getStringExtra("nama");         kelasid = i.getStringExtra("kelasid");         textView.setText(nama +" : "+kelasid);          final LinearLayoutManager layoutManager = new LinearLayoutManager(this);         layoutManager.setOrientation(LinearLayoutManager.VERTICAL);         recyclerViewx.setLayoutManager(layoutManager);            firebase.collection("kelas").document(kelasid).collection("siswa").whereEqualTo("nama",nama)                 .get()                 .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {                     @Override                     public void onComplete(@NonNull Task<QuerySnapshot> task) {                         if(task.isSuccessful()) {                             if (task.getResult().size() > 0) {                                 for (QueryDocumentSnapshot documentSnapshot : task.getResult()) {                                     documentid = documentSnapshot.getId();                                     kelas kelas = documentSnapshot.toObject(kelas.class);                                      pre_pengetahuan = kelas.getPre_pengetahuan();                                     post_pengetahuan = kelas.getPost_pengetahuan();                                     sikap = kelas.getSikap();                                     keterampilan = kelas.getKeterampilan();                                     deskripsi = kelas.getDeskripsi();                                     designpattern = kelas.getDesignpattern();                                     coverbuku = kelas.getCoverbuku();                                 }                                 runOnUiThread(new Runnable() {                                     @Override                                     public void run() {                                         setuprecycleview();                                     }                                 });                                  convertntampil();                              }                         }                     }                 });     }       private void setuprecycleview() {         Query query = firebase.collection("kelas").document(kelasid).collection("siswa").document(documentid).collection("jurnalsikap").orderBy("butir", Query.Direction.ASCENDING);          FirestoreRecyclerOptions<jurnal_sikap_adapter> options = new FirestoreRecyclerOptions.Builder<jurnal_sikap_adapter>()                 .setQuery(query, jurnal_sikap_adapter.class).build();          adapter = new jurnaladapter(options);         recyclerViewx.setHasFixedSize(true);         recyclerViewx.setAdapter(adapter);         adapter.startListening();     } 

I edited my adapter. Maybe I got something wrong in my adapter:

public class jurnaladapter extends FirestoreRecyclerAdapter<jurnal_sikap_adapter, jurnaladapter.jurnalholder> {      /**      * Create a new RecyclerView adapter that listens to a Firestore Query.  See {@link      * FirestoreRecyclerOptions} for configuration options.      *      * @param options      */     public jurnaladapter(@NonNull FirestoreRecyclerOptions<jurnal_sikap_adapter> options) {         super(options);     }      @Override     protected void onBindViewHolder(@NonNull jurnalholder jurnalholder, int i, @NonNull jurnal_sikap_adapter jurnal_sikap_adapter) {         jurnalholder.catatantv.setText(jurnal_sikap_adapter.getCatatan());         jurnalholder.butirtv.setText(jurnal_sikap_adapter.getButir());     }      @NonNull     @Override     public jurnalholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {         View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.jurnal_sikap_model,parent,false);         return  new jurnalholder(v);     }      class jurnalholder extends RecyclerView.ViewHolder{         TextView catatantv;         TextView butirtv;          public jurnalholder(@NonNull View itemView) {             super(itemView);             catatantv = (TextView) itemView.findViewById(R.id.catatansikap);             butirtv = (TextView) itemView.findViewById(R.id.butirSikap);         }     } } 

this my firestore enter image description here enter image description here enter image description here this my model class this model class

</div
           

回答リスト

0
 
vote

最初にアダプタをビューに設定し、その後リスニングを開始します。

<事前> <コード> adapter = new jurnaladapter(options); recyclerViewx.setHasFixedSize(true); recyclerViewx.setAdapter(adapter); adapter.startListening();
 

You'll want to first set the adapter to the view, and only then start listening on it:

adapter = new jurnaladapter(options); recyclerViewx.setHasFixedSize(true); recyclerViewx.setAdapter(adapter); adapter.startListening(); 
</div
 
 
 
 
0
 
vote

firebaseによって実装されているバックグラウンドスレッドからアダプタを設定するので、おそらくメインUIスレッドのRecyclerviewにアダプタを設定する必要があります。

so for Loopの後のクエリコールバックで:

これの代わりに:

<事前> <コード> ...... ...... setuprecycleview(); convertntampil(); ....... .......

これを行う:

<事前> <コード> ...... ...... runOnUiThread(new Runnable(){ @Override public void run(){ //call this on UI Thread setuprecycleview(); } }); convertntampil(); ..... ....

更新:

大丈夫私はあなたがビルドするクエリが正しくないと仮定しています、あなたはDocumentIDを2回使っています。

これ:

<事前> <コード> Query query = firebase.collection("kelas").document(documentid).collection("siswa").document(documentid).collection("jurnalsikap").orderBy("butir", Query.Direction.ASCENDING);

私はこのようなものでなければならないと思います:

<事前> <コード> Query query = firebase.collection("kelas").document(kelasid).collection("siswa").document(documentid).collection("jurnalsikap").orderBy("butir", Query.Direction.ASCENDING);
 

Maybe its because you set the adapter from a background thread which is implemented by firebase, you should probably set the adapter to your recyclerview on the Main UI Thread:

So in your Query callback after the for loop:

Instead of this:

...... ...... setuprecycleview(); convertntampil(); ....... ....... 

Do this:

...... ......  runOnUiThread(new Runnable(){ @Override  public void run(){  //call this on UI Thread setuprecycleview();  }  });  convertntampil(); ..... .... 

UPDATE:

Okay I am assuming that the query you build is not correct, you are using documentid twice.

this:

Query query = firebase.collection("kelas").document(documentid).collection("siswa").document(documentid).collection("jurnalsikap").orderBy("butir", Query.Direction.ASCENDING); 

I think must be like this:

Query query = firebase.collection("kelas").document(kelasid).collection("siswa").document(documentid).collection("jurnalsikap").orderBy("butir", Query.Direction.ASCENDING); 
</div
 
 
         
         
0
 
vote

ADD startListening() <コード> RecyclerView に設定する前に、

<事前> <コード> private void setuprecycleview() { Query query = firebase.collection("kelas").document(kelasid).collection("siswa").document(documentid).collection("jurnalsikap").orderBy("butir", Query.Direction.ASCENDING); FirestoreRecyclerOptions<jurnal_sikap_adapter> options = new FirestoreRecyclerOptions.Builder<jurnal_sikap_adapter>() .setQuery(query, jurnal_sikap_adapter.class).build(); adapter = new jurnaladapter(options); recyclerViewx.setHasFixedSize(true); adapter.startListening(); recyclerViewx.setAdapter(adapter); }
 

Add startListening() before setting the adapter to the RecyclerView as below:

private void setuprecycleview() {     Query query = firebase.collection("kelas").document(kelasid).collection("siswa").document(documentid).collection("jurnalsikap").orderBy("butir", Query.Direction.ASCENDING);      FirestoreRecyclerOptions<jurnal_sikap_adapter> options = new FirestoreRecyclerOptions.Builder<jurnal_sikap_adapter>()             .setQuery(query, jurnal_sikap_adapter.class).build();      adapter = new jurnaladapter(options);     recyclerViewx.setHasFixedSize(true);     adapter.startListening();     recyclerViewx.setAdapter(adapter);  } 
</div
 
 
       
       

関連する質問

4  FireBaSeRecyclerAdapterはデータビンディングと連携しません  ( Firebaserecycleradapter doesnt work with databindings ) 
databindings を使用して recyclerview を使用していますが、アプリを初めて表示してから表示されていない場合は何も表示されていません。インスタントランコンテンツが表示されます。 私の視聴者: <事前> <コード> class MyVi...

-6  RecyClerview OnCreateViewholderは実行されません  ( Recyclerview oncreateviewholder does not run ) 
私は何時間を検索しています、そして私はそれが単純なものであると確信していますが、私は答えを見つけることができません。 <コード> onCreateViewHolder および<コード> onBindViewHolder は実行されません。誰かが私を助けてくれる...

0  iOS Fuiauth Providerを選択しました  ( Ios fuiauthprovider selected provider ) 
サインインのためのボックスのFirebase UIからロードするとき <事前> <コード> FUIAuth.defaultAuthUI() OnClickをキャプチャする方法や、どの認証方法がユーザーが選択したのかを知っていますか? 私が見るのは: <事...

0  FireBaseUI FireStorereCyclerAdapterのチャットアプリのようにリバイクリビューレイアウトをリバースする方法は?  ( How to reverse recyclerview layout like a chat app with firebaseui firestorerecy ) 
MirestOrereCyclerAdapterを使用して、Javaでチャットアプリを作成しています。メッセージを追加するときはうまく機能しますが、私はメッセージが上にないようにメッセージを表示したいです。私はを試しました <事前> <コード> layout...

0  FireBase Googleが働いていません  ( Firebase google sign in not working ) 
このようなコードにサインインしました: <事前> <コード> ng serve --env=local 0 ボディロードが登録されていない場合は、サインインボタン(#SignInButton)を表示したい場合は、サインアウトボタンを非表示にして、「そこに...

1  SuperClassからの抽象的なメソッドとオーバーライドを実装するFireBaSerecyclerAdapter  ( Firebaserecycleradapter implementing abstract method and override from superclas ) 
リアルタイムデータ/チャットアプリのためのFirebaseの使用 私の問題は次のとおりです。 FirebaseRecyclerAdapter から派生した匿名クラスは、抽象的または実装抽象メソッド onBindViewHolder(VH, int, T) ...

0  FireBaseUI - RecyClerviewアイテムの位置からURLをダウンロードする方法?  ( Firebaseui how to get download url from recyclerview item position ) 
ファイルをFireBaseのデータベースにアップロードし、FirebaseUI Recyclerviewを使用してそれを一覧表示しました。 私の問題は次のとおりです。クリックしたRecyclerviewアイテムからダウンロードURLを取得する方法は?私はこれま...

0  FireBase Google Auth:有効になっていても、IDプロバイダの設定が無効になっています  ( Firebase google auth getting the identity provider configuration is disabled ) 
Firebaseコンソールでは明確に有効になっていても、Firebase Google承認から「IDプロバイダの設定は無効になっています」を取得しています。すべてのGoogleアカウントでは起こりません。 は、このエラーメッセージがFirebase許可...

0  FireBase AuthuiはOnActivityResultを呼び出しません  ( Firebase authui not calling onactivityresult ) 
ユーザーログインを処理するためにFirebase Authuiを使用するAndroidアプリを構築しています。 <事前> <コード> implementation 'com.google.firebase:firebase-firestore:21.4.3'...

1  FireBase AuthでFirebaseデータベースを追加できません[二重]  ( Unable to add firebase database with firebase auth ) 
この質問はすでにここで回答を持っています Android StudioでFireBaseApterを設定するのですか? (2回答) ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有