// Path: app/src/main/java/com/zzzmode/appopsx/ui/core/LocalImageLoader.java
// public class LocalImageLoader {
// 
//   private static LruCache<String, Drawable> sLruCache = null;
// 
//   private static void init(Context context) {
//     if (sLruCache == null) {
// 
//       ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
//       int maxSize = Math.round(am.getMemoryClass() * 1024 * 1024 * 0.3f);
// 
//       sLruCache = new LruCache<String, Drawable>(maxSize) {
//         @Override
//         protected int sizeOf(String key, Drawable drawable) {
//           if (drawable != null) {
//             if (drawable instanceof BitmapDrawable) {
//               return ((BitmapDrawable) drawable).getBitmap().getAllocationByteCount();
//             } else {
//               return drawable.getIntrinsicWidth() * drawable.getIntrinsicHeight() * 2;
//             }
//           }
//           return super.sizeOf(key, drawable);
//         }
// 
//         @Override
//         protected void entryRemoved(boolean evicted, String key, Drawable oldValue,
//             Drawable newValue) {
//           super.entryRemoved(evicted, key, oldValue, newValue);
// 
//         }
//       };
//     }
//   }
// 
//   public static void load(ImageView view, AppInfo appInfo) {
// 
//     Drawable drawable = getDrawable(view.getContext(), appInfo);
// 
//     if (drawable != null) {
//       view.setImageDrawable(drawable);
//     } else {
//       view.setImageResource(R.mipmap.ic_launcher);
//     }
//   }
// 
// 
//   public static Drawable getDrawable(Context context, AppInfo appInfo) {
//     init(context);
//     Drawable drawable = sLruCache.get(appInfo.packageName);
// 
//     if (drawable == null && appInfo.applicationInfo != null) {
//       if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP_MR1) {
//         drawable = appInfo.applicationInfo.loadUnbadgedIcon(context.getPackageManager());
//       }else {
//         drawable = appInfo.applicationInfo.loadIcon(context.getPackageManager());
//       }
//       UserInfo currentUser = Users.getInstance().getCurrentUser();
//       if(currentUser != null && currentUser.isManagedProfile()){
//         drawable = context.getPackageManager().getUserBadgedIcon(drawable,currentUser.getUserHandle());
//       }
//       sLruCache.put(appInfo.packageName, drawable);
//     }
//     return drawable;
//   }
// 
//   public static void initAdd(Context context, AppInfo appInfo) {
//     init(context);
//     if (sLruCache.evictionCount() == 0) {
//       sLruCache
//           .put(appInfo.packageName, appInfo.applicationInfo.loadIcon(context.getPackageManager()));
//     }
//   }
// 
//   public static void clear(){
//     sLruCache.evictAll();
//   }
// 
// }
// 
// Path: app/src/main/java/com/zzzmode/appopsx/ui/model/AppInfo.java
// public class AppInfo implements Parcelable {
// 
//   public String appName;
//   public String packageName;
//   public long time;
//   public long installTime;
//   public long updateTime;
//   public String pinyin;
//   public ApplicationInfo applicationInfo;
// 
//   @Override
//   public boolean equals(Object o) {
//     if (this == o) {
//       return true;
//     }
//     if (o == null || getClass() != o.getClass()) {
//       return false;
//     }
// 
//     AppInfo appInfo = (AppInfo) o;
// 
//     return packageName != null ? packageName.equals(appInfo.packageName)
//         : appInfo.packageName == null;
// 
//   }
// 
//   @Override
//   public int describeContents() {
//     return 0;
//   }
// 
//   @Override
//   public void writeToParcel(Parcel dest, int flags) {
//     dest.writeString(this.appName);
//     dest.writeString(this.packageName);
//   }
// 
//   public AppInfo() {
//   }
// 
//   protected AppInfo(Parcel in) {
//     this.appName = in.readString();
//     this.packageName = in.readString();
//   }
// 
//   public static final Parcelable.Creator<AppInfo> CREATOR = new Parcelable.Creator<AppInfo>() {
//     @Override
//     public AppInfo createFromParcel(Parcel source) {
//       return new AppInfo(source);
//     }
// 
//     @Override
//     public AppInfo[] newArray(int size) {
//       return new AppInfo[size];
//     }
//   };
// 
// 
//   @Override
//   public String toString() {
//     return "AppInfo{" +
//         "appName='" + appName + '\'' +
//         ", packageName='" + packageName + '\'' +
//         '}';
//   }
// }


import androidx.recyclerview.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.zzzmode.appopsx.R;
import com.zzzmode.appopsx.ui.core.LocalImageLoader;
import com.zzzmode.appopsx.ui.model.AppInfo;
package com.zzzmode.appopsx.ui.main;


/**
 * Created by zl on 2017/5/7.
 */

public class AppItemViewHolder extends RecyclerView.ViewHolder {

  private ImageView imgIcon;
  TextView tvName;

  public AppItemViewHolder(View itemView) {
    super(itemView);
    imgIcon = itemView.findViewById(R.id.app_icon);
    tvName = itemView.findViewById(R.id.app_name);
  }


  public void bindData(AppInfo appInfo) {
    tvName.setText(appInfo.appName);
// Path: app/src/main/java/com/zzzmode/appopsx/ui/core/LocalImageLoader.java
// public class LocalImageLoader {
// 
//   private static LruCache<String, Drawable> sLruCache = null;
// 
//   private static void init(Context context) {
//     if (sLruCache == null) {
// 
//       ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
//       int maxSize = Math.round(am.getMemoryClass() * 1024 * 1024 * 0.3f);
// 
//       sLruCache = new LruCache<String, Drawable>(maxSize) {
//         @Override
//         protected int sizeOf(String key, Drawable drawable) {
//           if (drawable != null) {
//             if (drawable instanceof BitmapDrawable) {
//               return ((BitmapDrawable) drawable).getBitmap().getAllocationByteCount();
//             } else {
//               return drawable.getIntrinsicWidth() * drawable.getIntrinsicHeight() * 2;
//             }
//           }
//           return super.sizeOf(key, drawable);
//         }
// 
//         @Override
//         protected void entryRemoved(boolean evicted, String key, Drawable oldValue,
//             Drawable newValue) {
//           super.entryRemoved(evicted, key, oldValue, newValue);
// 
//         }
//       };
//     }
//   }
// 
//   public static void load(ImageView view, AppInfo appInfo) {
// 
//     Drawable drawable = getDrawable(view.getContext(), appInfo);
// 
//     if (drawable != null) {
//       view.setImageDrawable(drawable);
//     } else {
//       view.setImageResource(R.mipmap.ic_launcher);
//     }
//   }
// 
// 
//   public static Drawable getDrawable(Context context, AppInfo appInfo) {
//     init(context);
//     Drawable drawable = sLruCache.get(appInfo.packageName);
// 
//     if (drawable == null && appInfo.applicationInfo != null) {
//       if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP_MR1) {
//         drawable = appInfo.applicationInfo.loadUnbadgedIcon(context.getPackageManager());
//       }else {
//         drawable = appInfo.applicationInfo.loadIcon(context.getPackageManager());
//       }
//       UserInfo currentUser = Users.getInstance().getCurrentUser();
//       if(currentUser != null && currentUser.isManagedProfile()){
//         drawable = context.getPackageManager().getUserBadgedIcon(drawable,currentUser.getUserHandle());
//       }
//       sLruCache.put(appInfo.packageName, drawable);
//     }
//     return drawable;
//   }
// 
//   public static void initAdd(Context context, AppInfo appInfo) {
//     init(context);
//     if (sLruCache.evictionCount() == 0) {
//       sLruCache
//           .put(appInfo.packageName, appInfo.applicationInfo.loadIcon(context.getPackageManager()));
//     }
//   }
// 
//   public static void clear(){
//     sLruCache.evictAll();
//   }
// 
// }
// 
// Path: app/src/main/java/com/zzzmode/appopsx/ui/model/AppInfo.java
// public class AppInfo implements Parcelable {
// 
//   public String appName;
//   public String packageName;
//   public long time;
//   public long installTime;
//   public long updateTime;
//   public String pinyin;
//   public ApplicationInfo applicationInfo;
// 
//   @Override
//   public boolean equals(Object o) {
//     if (this == o) {
//       return true;
//     }
//     if (o == null || getClass() != o.getClass()) {
//       return false;
//     }
// 
//     AppInfo appInfo = (AppInfo) o;
// 
//     return packageName != null ? packageName.equals(appInfo.packageName)
//         : appInfo.packageName == null;
// 
//   }
// 
//   @Override
//   public int describeContents() {
//     return 0;
//   }
// 
//   @Override
//   public void writeToParcel(Parcel dest, int flags) {
//     dest.writeString(this.appName);
//     dest.writeString(this.packageName);
//   }
// 
//   public AppInfo() {
//   }
// 
//   protected AppInfo(Parcel in) {
//     this.appName = in.readString();
//     this.packageName = in.readString();
//   }
// 
//   public static final Parcelable.Creator<AppInfo> CREATOR = new Parcelable.Creator<AppInfo>() {
//     @Override
//     public AppInfo createFromParcel(Parcel source) {
//       return new AppInfo(source);
//     }
// 
//     @Override
//     public AppInfo[] newArray(int size) {
//       return new AppInfo[size];
//     }
//   };
// 
// 
//   @Override
//   public String toString() {
//     return "AppInfo{" +
//         "appName='" + appName + '\'' +
//         ", packageName='" + packageName + '\'' +
//         '}';
//   }
// }


// Path: app/src/main/java/com/zzzmode/appopsx/ui/main/AppItemViewHolder.java
import androidx.recyclerview.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.zzzmode.appopsx.R;
import com.zzzmode.appopsx.ui.core.LocalImageLoader;
import com.zzzmode.appopsx.ui.model.AppInfo;

package com.zzzmode.appopsx.ui.main;


/**
 * Created by zl on 2017/5/7.
 */

public class AppItemViewHolder extends RecyclerView.ViewHolder {

  private ImageView imgIcon;
  TextView tvName;

  public AppItemViewHolder(View itemView) {
    super(itemView);
    imgIcon = itemView.findViewById(R.id.app_icon);
    tvName = itemView.findViewById(R.id.app_name);
  }


  public void bindData(AppInfo appInfo) {
    tvName.setText(appInfo.appName);
    LocalImageLoader.load(imgIcon, appInfo);