2

我正在使用图像加载器来显示来自 json 解析的图像和文本。文本显示,但图像不显示。没有错误,但它显示默认图标。任何人请帮助我为什么图像不显示。我的代码如下:

 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());

它正在工作..但是每次我向下滚动并向上移动时,都会下载图像。我需要在缓存中显示。所以我使用了图像加载器。但它不显示图像。

4

2 回答 2

0

我可以建议你使用 ION 库来加载这样的图像。使用该库,只需这段代码即可从 URL 异步下载图像:

        String url = datamap.get(image1);
        Ion.with(holder.userImage).placeholder(R.drawable.new_loading)
                .error(R.drawable.loading_animation).load(url);
于 2014-10-07T13:07:15.533 回答
0

要从服务器异步加载图像,您可以使用 Picasso 小型库。这是毕业典礼

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);

而已。欲了解更多信息,请访问这里

于 2016-03-30T11:49:15.783 回答