2016-12-04 12 views
0

こんにちは私のカスタムプログラムでは、imageViewと2つのtextFieldが含まれています。getviewメソッドでは、イメージビューを使用してインターネットから画像を取得しています。私はlrucacheを使用して、外部ストレージにダウンロードしたイメージを保存せずにイメージを表示する必要があります。誰かがこれをコード化するのを助けます。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

歓迎ですので、コードで試したこと、あなたが遭遇した問題、これまでに試したことをお見せください。関連するコードだけを追加してください。 –

答えて

0

ベストな方法は、サードパーティのライブラリを使用しています。ピカソ、グライドなどに試してみてください。

幸運

+0

ありがとう..私はグライドを使用しています...私のために働いています –

+0

素晴らしい:) –

関連する問題