2014-10-07 103 views
2

我正在使用圖像加載器來顯示來自json解析的圖像和文本。文字正在顯示,但圖像不顯示。沒有錯誤,但它顯示默認圖標。任何人請幫助我爲什麼圖像不顯示。我的代碼如下:使用圖像加載器時圖像不顯示android

public class GridAdapter extends ArrayAdapter<Persons> { 
ArrayList<Persons> personList; 
LayoutInflater layoutInflater; 
int Resource; 
ViewHolder viewHolder; 
ImageLoader imageLoader; // declared image laoder 

public GridAdapter(Context context, int resource, ArrayList<Persons> objects) { 
    super(context, resource, objects); 
    layoutInflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    Resource = resource; 
    personList = objects; 
    } 
    @Override 
    public int getCount() { 
    // TODO Auto-generated method stub 
return super.getCount(); 
    } 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
View v= convertView; 
imageLoader = new ImageLoader(getContext()); // since thrown null pointer exception when i declared this, it's not declaring null pointer exception but image is not displaying, default icon set in ImageLoader is displaying.. 

if(v==null){ 
    viewHolder = new ViewHolder(); 
    v = layoutInflater.inflate(Resource, null); 
    viewHolder.tvName=(TextView)v.findViewById(R.id.tvname); 
    viewHolder.imageview=(ImageView)v.findViewById(R.id.picture); 
    v.setTag(viewHolder); 


} 
else{ 
    viewHolder = (ViewHolder) v.getTag(); 

    } 
    viewHolder.tvName.setText(personList.get(position).getName()); 
    imageLoader.DisplayImage(personList.get(position).getImage(),viewHolder.imageview);// this is not working.. 
// TODO Auto-generated method stub 
    return v; 
    } 
static class ViewHolder { 
public ImageView imageview; 
public TextView tvName; 


    } 

} 

注:

,如果我用這個,

私有類DownloadImageTask擴展的AsyncTask { ImageView的bmImage;

public DownloadImageTask(ImageView bmImage) { 
     this.bmImage = bmImage; 
    } 

    protected Bitmap doInBackground(String... urls) { 
     String urldisplay = urls[0]; 
     Bitmap mIcon11 = null; 
     try { 
      InputStream in = new java.net.URL(urldisplay).openStream(); 
      mIcon11 = BitmapFactory.decodeStream(in); 
     } catch (Exception e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 
     return mIcon11; 
    } 

    protected void onPostExecute(Bitmap result) { 
     bmImage.setImageBitmap(result); 
    } 

} 

和ImageView的設置爲

new DownloadImageTask(holder.imageview).execute(actorList.get(position).getImage()); 

它的工作..但每次當我向下滾動,向上移動,圖像被下載。我需要顯示在緩存中。所以我使用了圖像加載器。但它不顯示圖像。

+0

檢查圖像的網址可能是錯誤的或檢查您的項目的網絡許可 – 2014-10-07 12:59:09

+0

@NaveenTamrakar我給了權限。請檢查我的編輯。 – Star 2014-10-07 13:06:14

+0

試試'imageLoader = ImageLoader.getInstance(); imageLoader.init();'並將其放在適配器的構造函數中。 – 2014-10-07 13:09:50

回答

0

我可以建議你使用ION庫來加載這樣的圖像。與該庫只需要這一段代碼來從URL異步下載圖片:

 String url = datamap.get(image1); 
     Ion.with(holder.userImage).placeholder(R.drawable.new_loading) 
       .error(R.drawable.loading_animation).load(url); 
+0

我也用這個..靜止圖像不顯示 – Star 2014-10-07 13:27:58

0

從服務器加載圖像異步可以用畢加索的小型圖書館。這裏是gradle這個

compile 'com.squareup.picasso:picasso:2.3.3' 

這裏是你的ImageView

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/imageView" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" /> 

下面是簡單的Java代碼

ImageView imageView = (ImageView) findViewById(R.id.imageView); 

    Picasso.with(this) 
      .load("YOUR_IMAGE_URL") 
      .into(imageView); 

就是這樣。欲瞭解更多信息,請訪問here