2016-12-04 73 views
0

您好我正在使用自定义gridView包含imageview和2 textFields在我的程序中,在getview方法我正在使用图像从互联网使用url获取图像在ImageView中显示图像。我需要使用lrucache显示图像而不将下载的图像存储在外部存储器中。有人帮我编码。自定义Gridview中的LRUCACHE

预先感谢您


这是我的自定义的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

欢迎SO,请出示你的代码都试过了,你遇到什么问题到和你有什么到目前为止已经试过。确保你只添加相关的代码。 –

回答

0

的最佳方式。你可以试试毕加索,滑翔或其他的东西。

好运

+0

谢谢..我使用Glide ...它为我工作 –

+0

很棒:) –