我的Recyclerview面临此问题。我正在尝试显示来自另一个Firebase数据库的图像。之前运行正常,现在运行应用程序时出现两个空白视图,但没有图像。我不确定发生了什么,因为它以前工作正常。有人可以帮我解决这个问题。提前致谢。 我的下面的代码
//Code
recyclerView = findViewById(R.id.recyclerView);
RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getApplicationContext(),1);
recyclerView.setLayoutManager(layoutManager);
myUploads = new ArrayList<Model>();
aAdapter = new Adapter(MainActivity2.this, myUploads);
recyclerView.setAdapter(aAdapter);
aAdapter.notifyDataSetChanged();
progressBar=findViewById(R.id.progressBar);
databaseReference = FirebaseDatabase.getInstance("https://puttt0-4331.firebaseio.com").getReference("Images");
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
progressBar.setVisibility(View.GONE);
if(snapshot.exists()){
for (DataSnapshot postsnapshot : snapshot.getChildren()) {
Model upload=postsnapshot.getValue(Model.class);
//myUploads.clear();
myUploads.add(upload);
aAdapter = new Adapter(MainActivity2.this, myUploads);
recyclerView.setAdapter(aAdapter);
//aAdapter.notifyDataSetChanged();
recyclerView.invalidate();
}
aAdapter.notifyDataSetChanged();
答案 0 :(得分:1)
你不应该
setAdapter(newAdapter)
每次您都从OnDataChange()方法获取新数据
这是您应该做的:
if(snapshot.exists()){
myUploads.clear();
for (DataSnapshot postsnapshot : snapshot.getChildren()) {
Model upload=postsnapshot.getValue(Model.class);
myUploads.add(upload);
}
aAdapter.notifyDataSetChanged();
}
尝试一下,告诉我会发生什么。并永远记住,您只需对适配器进行一次初始化,即
aAdapter = new Adapter(MainActivity2.this, myUploads);//this should only be done only once for the adapter