【发布时间】:2020-12-21 12:56:06
【问题描述】:
我正在尝试调试我的代码,但我的回收站视图没有显示任何内容。我正在尝试将 2 个回收器视图与 2 个不同的适配器一起使用,因此下面的适配器代码不起作用。我试过在上面应用日志,发现没有调用 onBindViewHolder 和 onCreateViewHolder。这对我来说已经有一段时间了。下面是我的适配器代码。
onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new RecordsAdapter.MyNewAdapterHolder(LayoutInflater.from(context).inflate(R.layout.records_layout,parent,false));
}
@Override
public void onBindViewHolder(@NonNull RecordsAdapter.MyNewAdapterHolder holder, int position) {
String str = PreferenceManager.getDefaultSharedPreferences(context).getString("Name", "get");
Toast.makeText(context, "str", Toast.LENGTH_SHORT).show();
FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance("https://milkdiary-farmer.firebaseio.com/");
DatabaseReference databaseReference = firebaseDatabase.getReference("Users").child("Users").child("Your Records");
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot childSnap : dataSnapshot.getChildren()){
String value = childSnap.getValue().toString();
Toast.makeText(context, "value", Toast.LENGTH_SHORT).show();
holder.farmername.setText(value);
holder.farmerRecord.setText(value);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
//holder.setDetails(this.recordsArrayList1.get(position));
}
@Override
public int getItemCount() {
return recordsArrayList1.size();
}
以下是我的主要活动代码
protected void onCreate(Bundle paramBundle) {
super.onCreate(paramBundle);
setContentView(R.layout.activity_main2);
Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar3);
setSupportActionBar(toolbar);
toolbar.setTitle("Records");
toolbar.setTitleTextColor(-1);
getIntent().getStringExtra("username");
RecyclerView recyclerView1 = (RecyclerView)findViewById(R.id.recycler);
RecyclerView recyclerView2 = findViewById(R.id.records_recyclerview);
recordsArrayList = new ArrayList<>();
RecordsAdapter recordsAdapter = new RecordsAdapter(this,recordsArrayList);
recyclerView2.addItemDecoration(new DividerItemDecoration(this,1));
recyclerView2.setAdapter(recordsAdapter);
recyclerView2.setLayoutManager(new LinearLayoutManager(this));
recordsAdapter.notifyDataSetChanged();
this.recyclerView = recyclerView1;
recyclerView1.setLayoutManager(new LinearLayoutManager(this));
this.arrayList = new ArrayList();
this.adapter = new MyAdapter(this, this.arrayList);
this.recyclerView.addItemDecoration(new DividerItemDecoration(this, 1));
this.recyclerView.setAdapter(this.adapter);
fetch();
}
【问题讨论】:
-
尝试在 this.recyclerView.setAdapter(this.adapter) 之后在适配器上调用 notifyDataSetChanged;
-
我试过了还是不行
-
如果你能提供demo项目我们可以帮助调试。
-
这是什么意思?
-
请编辑您的问题以在您添加多人指向的
notifyDataSetChanged的调用后显示更新的代码。还要注意onCancelled的最小实现是:public void onCancelled(@NonNull DatabaseError databaseError) { throw databaseError.toException(); }
标签: android firebase-realtime-database android-recyclerview