Android 如何从url列表填充ImageSwitcher?(编辑:水平循环视图)

Android 如何从url列表填充ImageSwitcher?(编辑:水平循环视图),android,android-studio,imageview,android-recyclerview,Android,Android Studio,Imageview,Android Recyclerview,我有一个包含字符串列表的对象。这些是图片的URL,我正在使用毕加索库在ImageView中进行设置。我想在图像切换器中设置这些图像,但我不知道怎么做(我以前做过一些研究,但没有结果)。谢谢你们的帮助 编辑: 我最终选择了一个水平的RecyclerView来创建一个类似于图库的视图,所以在我的一行布局中只有一个ImageView。我现在也有一个回收器适配器,但我不知道我是否必须在适配器中包含字符串列表,或者只是处理imageView并动态创建imageView并将其添加到java类中的回收器列表中

我有一个包含字符串列表的对象。这些是图片的URL,我正在使用毕加索库在ImageView中进行设置。我想在图像切换器中设置这些图像,但我不知道怎么做(我以前做过一些研究,但没有结果)。谢谢你们的帮助

编辑:
我最终选择了一个水平的RecyclerView来创建一个类似于图库的视图,所以在我的一行布局中只有一个ImageView。我现在也有一个回收器适配器,但我不知道我是否必须在适配器中包含字符串列表,或者只是处理imageView并动态创建imageView并将其添加到java类中的回收器列表中。。。。谢谢你的帮助

您的
适配器
应该有一个构造函数,您可以在其中将URL作为参数传递给
适配器
。您的
适配器将如下所示:

public class ImageSwitcherAdapter extends RecyclerView.Adapter<ImageSwitcherAdapter.MyViewHolder> {

    private Context context;
    private List<String> urls;

    public ImageSwitcherAdapter(Context context, List<String> urls) {
        this.context = context;
        this.urls = urls;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.your_row_layout, parent, false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        Uri uri = Uri.parse(urls.get(position));
        Picasso.with(context).load(uri).into(holder.image);
    }

    @Override
    public int getItemCount() {
        return urls.size();
    }

    public static class MyViewHolder extends RecyclerView.ViewHolder {
        private ImageView image;

        public MyViewHolder(View itemView) {
            super(itemView);
            image = itemView.findViewById(R.id.your_imageview);
        }
    }
}
RecyclerView recyclerView = findViewById(R.id.your_recyclerview);

LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(layoutManager);

ImageSwitcherAdapter adapter = new ImageSwitcherAdapter(this, urls);
recyclerView.setAdapter(adapter);

您的
适配器
应该有一个构造函数,您可以在其中将URL作为参数传递给
适配器
。您的
适配器将如下所示:

public class ImageSwitcherAdapter extends RecyclerView.Adapter<ImageSwitcherAdapter.MyViewHolder> {

    private Context context;
    private List<String> urls;

    public ImageSwitcherAdapter(Context context, List<String> urls) {
        this.context = context;
        this.urls = urls;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.your_row_layout, parent, false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        Uri uri = Uri.parse(urls.get(position));
        Picasso.with(context).load(uri).into(holder.image);
    }

    @Override
    public int getItemCount() {
        return urls.size();
    }

    public static class MyViewHolder extends RecyclerView.ViewHolder {
        private ImageView image;

        public MyViewHolder(View itemView) {
            super(itemView);
            image = itemView.findViewById(R.id.your_imageview);
        }
    }
}
RecyclerView recyclerView = findViewById(R.id.your_recyclerview);

LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(layoutManager);

ImageSwitcherAdapter adapter = new ImageSwitcherAdapter(this, urls);
recyclerView.setAdapter(adapter);

您可以直接连接到ImageSwitcher。如果你坚持使用毕加索,你可能需要从加载的图像中构建一个
Drawable
,并在
setImageDrawable(Drawable Drawable)
中使用它。谢谢你的回答,问题是,每次都有一个图像。我想列出我所有的清单。尺寸是可变的,图像切换器也是可变的。我唯一能想到的就是接收方法。我不太精通Rx,所以我无法进一步发展这个想法。谢谢你的评论,我想我可以用一种更简单的方式来做。否则,水平滚动视图是否更好?但我不知道如何在该视图中动态创建imageview。。欢迎您提供建议,谢谢:)您可以直接访问ImageSwitcher。如果你坚持使用毕加索,你可能需要从加载的图像中构建一个
Drawable
,并在
setImageDrawable(Drawable Drawable)
中使用它。谢谢你的回答,问题是,每次都有一个图像。我想列出我所有的清单。尺寸是可变的,图像切换器也是可变的。我唯一能想到的就是接收方法。我不太精通Rx,所以我无法进一步发展这个想法。谢谢你的评论,我想我可以用一种更简单的方式来做。否则,水平滚动视图是否更好?但我不知道如何在该视图中动态创建imageview。。欢迎您的选择,谢谢:)谢谢!它工作了,我只是在使用毕加索时不需要做Uri解析,它可以直接用一个字符串加载图像!:)谢谢它工作了,我只是在使用毕加索时不需要做Uri解析,它可以直接用一个字符串加载图像!:)