如何从URL列表中填充ImageSwitcher? (编辑:水平RecyclerView)

时间:2016-03-30 12:48:39

标签: android android-studio imageview android-recyclerview recycler-adapter

我有一个包含字符串列表的对象。这些是图片的网址,我正在使用Picasso库在ImageView中设置。我想在ImageSwitcher中设置这些图像,我不知道该怎么做(我以前做过一些研究但没有结果)。谢谢你的帮助!

编辑: 我最终选择了一个Horizo​​ntal RecyclerView来拥有一个类似的Gallery,所以在我的布局中只有一个ImageView。我现在也有一个Recycler Adapter但我不知道我是否必须在适配器中包含我的字符串列表,或者只是处理imageView并动态创建一个ImageView并将其添加到我的java类中的recycleler列表中....谢谢帮助!

1 个答案:

答案 0 :(得分:2)

您的Adapter应该有一个构造函数,您可以在其中将url作为参数传递给Adapter。您的Adapter看起来像这样:

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);
        }
    }
}

Adapter设置为RecyclerView将如下所示:

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);