Java 回收器视图显示为空而不是显示图像?
我不知道这是什么原因,但没有图像显示任何图像。 请帮我纠正这个问题 我的适配器类:Java 回收器视图显示为空而不是显示图像?,java,android,android-recyclerview,Java,Android,Android Recyclerview,我不知道这是什么原因,但没有图像显示任何图像。 请帮我纠正这个问题 我的适配器类: public class Images_Adapter extends RecyclerView.Adapter<Images_Adapter.ViewHolder> { private List<Images_Item> items; private int itemLayout; public Images_Adapter(List<Images_It
public class Images_Adapter extends RecyclerView.Adapter<Images_Adapter.ViewHolder> {
private List<Images_Item> items;
private int itemLayout;
public Images_Adapter(List<Images_Item> items, int itemLayout) {
this.items = items;
this.itemLayout = itemLayout;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(itemLayout, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Images_Item item = items.get(position);
Glide.with(holder.image.getContext())
.load(item.getImageURL())
.into(holder.image);
}
@Override
public int getItemCount() {
return items.size();
}
static class ViewHolder extends RecyclerView.ViewHolder {
ImageView image;
ViewHolder(View itemView) {
super(itemView);
image = itemView.findViewById(R.id.ImageItem);
}
}
}
我的活动课:
public class Events_and_Participations extends AppCompatActivity {
StorageReference reference;
RecyclerView recyclerView;
Images_Adapter adapter;
FirebaseAuth auth;
Button button;
FirebaseUser user;
List<Images_Item> items = new ArrayList<>();
@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");
if (user != null){
reference.listAll()
.addOnSuccessListener(listResult -> {
for (StorageReference item : listResult.getItems()) {
item.getDownloadUrl().addOnCompleteListener(task -> {
items.add(new Images_Item(task.getResult().toString()));
});
}
})
.addOnFailureListener(e -> Toast.makeText(Events_and_Participations.this, e.getMessage(), Toast.LENGTH_SHORT).show());
}
adapter = new Images_Adapter(items, R.layout.item_events_image);
recyclerView = findViewById(R.id.events_photos);
recyclerView.setAdapter(adapter);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setItemAnimator(new DefaultItemAnimator());
}
}
它只是显示一个空屏幕,即使它不抛出错误。我得到正确的链接,但它不会显示图像。不显示日志cat,也不显示图像。ImageUrl从未初始化,因此始终为空
class Images_Item {
private String imageURL;
String getImageURL() {
return imageURL;
}
Images_Item(String string) {
this.imageURL = string;
}
class Images_Item {
private String imageURL;
String getImageURL() {
return imageURL;
}
Images_Item(String string) {
this.imageURL = string;
}
}ImageUrl从未初始化,因此始终为空
class Images_Item {
private String imageURL;
String getImageURL() {
return imageURL;
}
Images_Item(String string) {
this.imageURL = string;
}
class Images_Item {
private String imageURL;
String getImageURL() {
return imageURL;
}
Images_Item(String string) {
this.imageURL = string;
}
}您可以解决以下几个问题: 首先,您没有在onCreateViewHolder中添加有效的布局路径,它应该包括R.layout.xx,请将xx替换为您的项目布局名称
@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());
}
}
最后,您没有在construcotr中使用图像URL设置imageURL属性,所以请在构造函数中进行设置
class Images_Item {
private String imageURL;
String getImageURL() {
return imageURL;
}
Images_Item(String string) {
imageURL = string; //<<<<<<<<<<<<< here is the change
}
}
您可以解决以下几个问题: 首先,您没有在onCreateViewHolder中添加有效的布局路径,它应该包括R.layout.xx,请将xx替换为您的项目布局名称
@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());
}
}
最后,您没有在construcotr中使用图像URL设置imageURL属性,所以请在构造函数中进行设置
class Images_Item {
private String imageURL;
String getImageURL() {
return imageURL;
}
Images_Item(String string) {
imageURL = string; //<<<<<<<<<<<<< here is the change
}
}
您没有设置imageUrl:
您没有设置imageUrl: