[英]Get Image from Urls with AsyncTask
我相信这不是一个新问题。 不幸的是,在为这项活动争取了20多个小时后,我仍然找不到解决方案。 你能帮我个忙吗? 我将不胜感激。
嘿,我的问题。 我想显示图像从不同的网址到girdView布局。 但是,我的代码无法正常工作,因此屏幕上没有任何显示。 你们能帮我解决这个问题吗?
以下是我的MainActivity类
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String [] imgUrlList = {
"http://image.tmdb.org/t/p/w500/cGOPbv9wA5gEejkUN892JrveARt.jpg",
"http://image.tmdb.org/t/p/w500/6FxOPJ9Ysilpq0IgkrMJ7PubFhq.jpg",
"http://image.tmdb.org/t/p/w500/z09QAf8WbZncbitewNk6lKYMZsh.jpg",
"http://image.tmdb.org/t/p/w500/kqjL17yufvn9OVLyXYpvtyrFfak.jpg"
};
mMovieAdapter = new MyAdapter(this, imgUrlList);
GridView gridview = (GridView) findViewById(R.id.gridView);
gridview.setAdapter(mMovieAdapter);
}
public class MyAdapter extends ArrayAdapter<String>{
private final Activity context;
private final String[] imgUrlList;
public MyAdapter (Activity context, String[] imgUrlList){
super(context, R.layout.image_item);
this.context = context;
this.imgUrlList = imgUrlList;
}
public View getView (int position, View view, ViewGroup parent){
LayoutInflater inflater = context.getLayoutInflater();
View rootView = inflater.inflate(R.layout.image_item, null, true);
new DownloadImageTask((ImageView) rootView.findViewById(R.id.imageItem)).execute(imgUrlList[position]);
ImageView imageView = (ImageView) rootView.findViewById(R.id.imageItem);
imageView.setImageURI(Uri.parse(imgUrlList[position]));
return rootView;
}
}
private class DownloadImageTask extends AsyncTask <String, Void, Bitmap>{
ImageView poster;
public DownloadImageTask(ImageView poster) {
this.poster = poster;
}
protected Bitmap doInBackground(String... urls){
String imageUrls = urls[0];
Bitmap moviePoster = null;
try {
InputStream in = new java.net.URL(imageUrls).openStream();
moviePoster = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return moviePoster;
}
@Override
protected void onPostExecute(Bitmap result) {
poster.setImageBitmap(result);
}
}
以下是我的xml(activity_main)文件
<GridView
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnWidth="185dp"
android:numColumns="auto_fit"/>
我也有一个imageView文件调用image_item
老实说,我不知道为什么。 但是使用此构造函数可以解决此问题:
super(context,0,imgUrlList);
代替
super(context, R.layout.image_item);
您可以使用picaso
库来实现您的目的。 https://github.com/square/picasso
您只需要初始化Picasso类并设置url。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.