使用图像加载器时图像不显示android
问题描述:
我正在使用图像加载器来显示来自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());
它的工作..但每次当我向下滚动,向上移动,图像被下载。我需要显示在缓存中。所以我使用了图像加载器。但它不显示图像。
答
我可以建议你使用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
答
从服务器加载图像异步可以用毕加索的小型图书馆。这里是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
检查图像的网址可能是错误的或检查您的项目的网络许可 – 2014-10-07 12:59:09
@NaveenTamrakar我给了权限。请检查我的编辑。 – Star 2014-10-07 13:06:14
试试'imageLoader = ImageLoader.getInstance(); imageLoader.init();'并将其放在适配器的构造函数中。 – 2014-10-07 13:09:50