2016-12-04 2 views
0

Привет Я использую пользовательские 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); 
    } 
} 

}

+0

Добро пожаловать С.О., пожалуйста, покажите, что вы пробовали в коде, какие проблемы вы столкнулись с и то, что вы пробовали до сих пор. Убедитесь, что вы добавили только соответствующий код. –

ответ

0

Лучший способ для достижения этой функции использует сторонние библиотеки. Вы можете попробовать попробовать Пикассо, Глейд или что-то еще.

Успехов

+0

спасибо .. я использую Glide ... его работающий для меня –

+0

Отлично здесь :) –

Смежные вопросы