Привет Я использую пользовательские gridView содержат imageview и 2 textFields в моей программе. В методе getview я использую выбор изображения из Интернета, используя url для отображения изображений в режиме просмотра изображений. Мне нужно использовать lrucache для показа изображений без сохранения загруженных изображений во внешнем хранилище. кто-нибудь поможет мне закодировать это.LRUCACHE в пользовательских gridview
Спасибо заранее
Это мой пользовательский класс GridView
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);
}
}
}
Добро пожаловать С.О., пожалуйста, покажите, что вы пробовали в коде, какие проблемы вы столкнулись с и то, что вы пробовали до сих пор. Убедитесь, что вы добавили только соответствующий код. –