Android studio中,recyclerview里传进了一个List<String> bitmapURL,里面装着bitmap的URL,请通过httpurlconnection获取每个bitmap,并将每个bitmap加载在item的imageview里
时间: 2024-05-12 10:15:08 浏览: 109
好的,以下是大致的步骤:
1. 在RecyclerView的Adapter中,定义一个ViewHolder类,并在ViewHolder类中获取item的ImageView实例。
2. 在ViewHolder类中,定义一个方法loadImage(String url),该方法用于加载图片,并将图片加载到ImageView中。
3. 在Adapter中的onBindViewHolder方法中,调用ViewHolder的loadImage方法,并将bitmapURL列表中对应的URL传递给loadImage方法。
4. 在loadImage方法中,使用HttpURLConnection和InputStream来获取图片数据,并将数据转换为Bitmap,最后将Bitmap设置到ImageView中。
下面是代码示例:
```java
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<String> bitmapURL;
public MyAdapter(List<String> bitmapURL) {
this.bitmapURL = bitmapURL;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
String url = bitmapURL.get(position);
holder.loadImage(url);
}
@Override
public int getItemCount() {
return bitmapURL.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
private ImageView imageView;
public ViewHolder(View itemView) {
super(itemView);
imageView = (ImageView) itemView.findViewById(R.id.image_view);
}
public void loadImage(String url) {
new Thread(() -> {
try {
URL imageUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream inputStream = conn.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
imageView.post(() -> imageView.setImageBitmap(bitmap));
} catch (IOException e) {
e.printStackTrace();
}
}).start();
}
}
}
```
注意,以上代码在子线程中加载图片数据,并在主线程中更新ImageView。这是因为Android不允许在主线程中进行网络请求,否则会导致应用ANR。
阅读全文