图像未在回收站视图中显示

时间:2020-09-13 15:08:03

标签: android firebase android-recyclerview

我的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();

               

1 个答案:

答案 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