2013-06-19 86 views
1

我使用asynctask從web網址加載圖像。使用asyncTask將圖像加載到自定義圖像適配器中

同時我正在嘗試使用自定義適配器將圖像加載到圖庫中。但畫廊顯示沒有圖像。

活動,

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> 

我不,我已經實現了錯,但畫廊顯示爲空。

請更正我的代碼!任何幫助表示讚賞!

+0

您應該重新編制圖庫以顯示新圖像。讓我知道這是否有助於你。 http://stackoverflow.com/questions/16008419/how-to-force-android-to-re-index-all-the-photos-on-the-phone – Sqeezer

+0

當你在這裏,嘗試[this](http ://stackoverflow.com/questions/11778140/using-asynctask-to-load-images-into-a-custom-adapter?rq = 1)和[this](http://stackoverflow.com/questions/11645026/ a-custom-adapter-that-displays-different-images-from-the-web-in-a-list?rq = 1) – verybadalloc

回答

0

利用getCount()設置爲在適配器爲零,這意味着你的適配器將顯示ZERO「東西」

我沒有閱讀代碼很好,但是這是一個點,可能使差異

相關問題