1

我正在使用 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>

我没有在哪里实施错误,但画廊显示为空。

请更正我的代码!!任何帮助表示赞赏!

4

1 回答 1

0

getCount() 在您的适配器中设置为零,这意味着您的适配器将显示零“事物”

我没有很好地阅读代码,但这可能会有所不同

于 2013-07-04T08:03:53.803 回答