2014-10-07 128 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

相关问题