我正在使用 asynctask 从 web url 加载图像。
同时我正在尝试使用自定义适配器将图像加载到图库中。但画廊显示没有图像。
活动,
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.property_image_adapter);
Intent intent = getIntent();
intent.getStringExtra("PropertyID");
PropertyImagesList ImageList = new PropertyImagesList();
img = ImageList
.fetchPropertyImages(intent.getStringExtra("PropertyID"));
//imgfromWebUrl=(ImageView)findViewById(R.id.imgfromWebUrl);
propertyImageGallery = (Gallery) findViewById(R.id.gallery1);
new LoadViewTask().execute();
}
private class LoadViewTask extends AsyncTask<Void, Integer, Bitmap> {
// Before running code in separate thread
@Override
protected Bitmap doInBackground(Void... params) {
View view;
Bitmap x = null;
for (int i = 0; i <= img.size() - 1; i++) {
try {
HttpURLConnection connection = (HttpURLConnection) new URL(
"url here"
+ img.get(i).Source.trim())
.openConnection();
connection.connect();
connection.setReadTimeout(120000);
InputStream input = connection.getInputStream();
x = BitmapFactory.decodeStream(input);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return x;
}
@Override
protected void onPostExecute(Bitmap result) {
super.onPostExecute(result);
Log.d("","On Post execute: " + result);
//imgfromWebUrl.setImageBitmap(result);
propertyImageGallery.setAdapter(new PropertyImageAdapter(Context, result));
}
}
}
我的自定义适配器类,
public class PropertyImageAdapter extends BaseAdapter {
private Context ctx;
Bitmap pics;
public PropertyImageAdapter(Context c,Bitmap pics) {
Log.d("","custom Adapter");
ctx = c;
this.pics=pics;
}
@Override
public int getCount() {
return 0;
}
@Override
public Object getItem(int arg0) {
return arg0;
}
@Override
public long getItemId(int arg0) {
return arg0;
}
@Override
public View getView(int arg0, View paramView, ViewGroup arg2) {
View localView;
Log.d("","getView: ");
if (paramView == null) {
localView = View.inflate(ctx,
R.layout.property_image_adapter, null);
} else {
localView = paramView;
}
ImageView imgfromWebUrl=(ImageView)localView.findViewById(R.id.imgfromWebUrl);
Log.d("", "pics[0]: "+pics);
imgfromWebUrl.setImageBitmap(pics);
imgfromWebUrl.setScaleType(ImageView.ScaleType.FIT_XY);
imgfromWebUrl.setLayoutParams(new Gallery.LayoutParams(150, 150));
return imgfromWebUrl;
}
}
布局,
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical" >
<Gallery
android:id="@+id/gallery1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:spacing="10dip" >
</Gallery>
<ImageView
android:id="@+id/imgfromWebUrl"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</ImageView>
</LinearLayout>
我没有在哪里实施错误,但画廊显示为空。
请更正我的代码!!任何帮助表示赞赏!