hi I am using custom gridView contain imageview and 2 textFields in my program, In getview method i'm am using image fetch from internet using url to show images in imageview. i need to use lrucache to show images without storing the downloaded images in external storage. somebody help me to code this.
Thank You in advance
This is my custom gridview class
public class CustomGridViewActivity extends ArrayAdapter<Actors> {
private static final String TAG = "CustomGridActivity";
ArrayList<Actors> actorList;
LayoutInflater vi;
int Resource;
ViewHolder holder;
public CustomGridViewActivity(Context context, int resource, ArrayList<Actors> objects) {
super(context, resource, objects);
vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Resource = resource;
actorList = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if(v == null){
holder = new ViewHolder();
v = vi.inflate(Resource, null);
holder.iconview = (ImageView) v.findViewById(R.id.IVicon);
holder.Name = (TextView) v.findViewById(R.id.tvName);
holder.Price = (TextView) v.findViewById(R.id.tvPrice);
v.setTag(holder);
}
else {
holder =(ViewHolder) v.getTag();
}
holder.iconview.setImageResource(R.mipmap.appcatlog);
if(actorList.get(position).getUrl().equals("null")) {
try {
String base =actorList.get(position).getImagefile();
String replacechar = "data:image/png;base64,";
base = base.replace(replacechar,"");
byte[] imageAsBytes = Base64.decode(base.getBytes(), Base64.DEFAULT);
holder.iconview.setImageBitmap(BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length));
}catch (Exception e){
e.getMessage();
}
}else{
new DownloadImageTask(holder.iconview).execute(actorList.get(position).getUrl());
}
holder.Name.setText(actorList.get(position).getName());
holder.Price.setText(actorList.get(position).getPrice());
return v;
}
static class ViewHolder {
public ImageView iconview;
public TextView Name;
public TextView Price;
}
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImageTask(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
if (urldisplay.contains("https:")||urldisplay.contains("http:")){
urldisplay = urldisplay.replace("https:","");
urldisplay = urldisplay.replace("http:","");
}
InputStream in = new URL("https:"+urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}
}