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);
}
}
}
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);
}