From 5cb380bf471c6c7db1d165183296176d564c1ad3 Mon Sep 17 00:00:00 2001 From: Matthew Wong Date: Sun, 27 Dec 2015 06:00:06 -0500 Subject: Don't use ResolveInfo for app settings ui --- .../pwdstore/autofill/AutofillRecyclerAdapter.java | 68 ++++++++++++---------- 1 file changed, 38 insertions(+), 30 deletions(-) (limited to 'app/src/main/java/com/zeapo/pwdstore/autofill/AutofillRecyclerAdapter.java') diff --git a/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillRecyclerAdapter.java b/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillRecyclerAdapter.java index eddf075e..e00f1c5b 100644 --- a/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillRecyclerAdapter.java +++ b/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillRecyclerAdapter.java @@ -3,12 +3,10 @@ package com.zeapo.pwdstore.autofill; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; import android.graphics.drawable.Drawable; import android.support.v7.util.SortedList; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.util.SortedListAdapterCallback; -import android.util.Pair; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -18,13 +16,12 @@ import android.widget.TextView; import com.zeapo.pwdstore.R; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; public class AutofillRecyclerAdapter extends RecyclerView.Adapter { - private SortedList apps; - private ArrayList allApps; - private HashMap> iconMap; + + private SortedList apps; + private ArrayList allApps; private PackageManager pm; private AutofillPreferenceActivity activity; @@ -51,28 +48,39 @@ public class AutofillRecyclerAdapter extends RecyclerView.Adapter allApps, HashMap> iconMap - , final PackageManager pm, AutofillPreferenceActivity activity) { - SortedList.Callback callback = new SortedListAdapterCallback(this) { - @Override - public int compare(ResolveInfo o1, ResolveInfo o2) { - return o1.loadLabel(pm).toString().toLowerCase().compareTo(o2.loadLabel(pm).toString().toLowerCase()); - } + public static class AppInfo { + public String label; + public String packageName; + public Drawable icon; - @Override - public boolean areContentsTheSame(ResolveInfo oldItem, ResolveInfo newItem) { - return oldItem.loadLabel(pm).toString().equals(newItem.loadLabel(pm).toString()); - } + public AppInfo(String label, String packageName, Drawable icon) { + this.label = label; + this.packageName = packageName; + this.icon = icon; + } + } - @Override - public boolean areItemsTheSame(ResolveInfo item1, ResolveInfo item2) { - return item1.loadLabel(pm).toString().equals(item2.loadLabel(pm).toString()); - } + public AutofillRecyclerAdapter(List allApps, final PackageManager pm + , AutofillPreferenceActivity activity) { + SortedList.Callback callback = new SortedListAdapterCallback(this) { + @Override + public int compare(AppInfo o1, AppInfo o2) { + return o1.label.toLowerCase().compareTo(o2.label.toLowerCase()); + } + + @Override + public boolean areContentsTheSame(AppInfo oldItem, AppInfo newItem) { + return oldItem.label.equals(newItem.label); + } + + @Override + public boolean areItemsTheSame(AppInfo item1, AppInfo item2) { + return item1.packageName.equals(item2.packageName); + } }; - this.apps = new SortedList<>(ResolveInfo.class, callback); + this.apps = new SortedList<>(AppInfo.class, callback); this.apps.addAll(allApps); this.allApps = new ArrayList<>(allApps); - this.iconMap = new HashMap<>(iconMap); this.pm = pm; this.activity = activity; } @@ -86,11 +94,11 @@ public class AutofillRecyclerAdapter extends RecyclerView.Adapter