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