Пара проблем, над которыми вы можете поработать:
Во-первых, вы не добавили действительный путь макета в onCreateViewHolder
, который должен включать R.layout.xx
, замените xx
макетом вашего элемента name.
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.xx, parent, false);
return new ViewHolder(v);
}
Во-вторых, вашим элементам Firebase требуется время, пока они не будут получены, поскольку он работает в фоновом потоке, поэтому вам нужно сделать что-то вроде adapter.notifiyDataSetChanged()
после получения элементов или вместо этого установить адаптер
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_events_and_participations);
user = FirebaseAuth.getInstance().getCurrentUser();
reference = FirebaseStorage.getInstance().getReference("images");
recyclerView = findViewById(R.id.events_photos);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setItemAnimator(new DefaultItemAnimator());
if (user != null){
reference.listAll()
.addOnSuccessListener(listResult -> {
for (StorageReference item : listResult.getItems()) {
item.getDownloadUrl().addOnCompleteListener(task -> {
items.add(new Images_Item(task.getResult().toString()));
});
}
adapter = new Images_Adapter(items, R.layout.item_events_image);
recyclerView.setAdapter(adapter);
})
.addOnFailureListener(e -> Toast.makeText(Events_and_Participations.this, e.getMessage(), Toast.LENGTH_SHORT).show());
}
}
Наконец, вы не установили атрибут imageURL
в construcotr с URL-адресами изображений, поэтому сделайте это в конструкторе.
class Images_Item {
private String imageURL;
String getImageURL() {
return imageURL;
}
Images_Item(String string) {
imageURL = string; //<<<<<<<<<<<<< here is the change
}
}