Android LruCache in ListView

偏执的太偏执、 2023-10-17 16:13 92阅读 0赞
  1. package zhangphil.cache;
  2. import android.app.ListActivity;
  3. import android.graphics.Bitmap;
  4. import android.graphics.BitmapFactory;
  5. import android.support.annotation.NonNull;
  6. import android.support.annotation.Nullable;
  7. import android.os.Bundle;
  8. import android.util.Log;
  9. import android.util.LruCache;
  10. import android.view.View;
  11. import android.view.ViewGroup;
  12. import android.widget.ArrayAdapter;
  13. import android.widget.ImageView;
  14. public class MainActivity extends ListActivity {
  15. private LruCache<String, Bitmap> mLruCache;
  16. @Override
  17. protected void onCreate(Bundle savedInstanceState) {
  18. super.onCreate(savedInstanceState);
  19. int CACHE_SIZE = 8 * 1024 * 1024;
  20. mLruCache = new LruCache(CACHE_SIZE);
  21. ArrayAdapter mAdapter = new ArrayAdapter(this, 0) {
  22. @NonNull
  23. @Override
  24. public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
  25. ImageView image = new ImageView(getContext());
  26. load(R.mipmap.ic_launcher, image);
  27. return image;
  28. }
  29. @Override
  30. public int getCount() {
  31. return 20;
  32. }
  33. };
  34. setListAdapter(mAdapter);
  35. }
  36. private void load(int id, ImageView image) {
  37. Bitmap bmp = mLruCache.get(String.valueOf(id));
  38. if (bmp == null) {
  39. Log.d("LruCache缓存", "没有缓存,开始创建新数据资源并缓存之。");
  40. bmp = BitmapFactory.decodeResource(getResources(), id);
  41. mLruCache.put(String.valueOf(id), bmp);
  42. } else {
  43. Log.d("LruCache缓存", "已有缓存,复用。");
  44. image.setImageBitmap(bmp);
  45. }
  46. }
  47. }

发表评论

表情:
评论列表 (有 0 条评论,92人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Android ListView

    ListView作为android的经常使用的控件,在使用时,经常会忘记一些使用要点,这里记录一下一些使用过程中的需求,以便后面使用查询: 设置 监听 使用