Android Universal Image Loader works like a champ.
It's very easy to use here is an example
But, basically this is the way to use it with a GridView
:
After the expected imports
, you should:
protected AbsListView list;
protected ImageLoader loader = ImageLoader.getInstance();
private String query;
final Context context = this;
private ItemAdapter adapter;
private DisplayImageOptions op;
@Override
public void onCreate(Bundle savedInstanceState) {
op = new DisplayImageOptions.Builder()
.displayer(new RoundedBitmapDisplayer(20))
.build();
list = (GridView) findViewById(R.id.gridViewSearch);
adapter = new ItemAdapter(images);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Do whatever you need to do after clicking an image.
}
});
}
And, of course you need the adapter
:
class ItemAdapter extends BaseAdapter {
private String[] imagesA;
public ItemAdapter(String [] Images){
this.imagesA = Images;
}
public void setData(String [] Images){
this.imagesA = Images;
}
private class ViewHolder {
public ImageView image;
}
@Override
public int getCount() {
return imagesA.length;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
v = getLayoutInflater().inflate(R.layout.image_in_gridview_layout, parent, false);
final ProgressBar spinner = (ProgressBar) v.findViewById(R.id.loading);
final ViewHolder holder = new ViewHolder();
holder.image = (ImageView) v.findViewById(R.id.grid_item_image);
v.setTag(holder);
loader.displayImage(imagesA[position], holder.image, op, new SimpleImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
spinner.setVisibility(View.VISIBLE);
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
spinner.setVisibility(View.GONE);
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
spinner.setVisibility(View.GONE);
}
});
return v;
}