Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 回收器视图显示为空而不是显示图像?_Java_Android_Android Recyclerview - Fatal编程技术网

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: