From b260a19be7172ad34487669a02c3002bc234b3b2 Mon Sep 17 00:00:00 2001 From: Matthew Wong Date: Fri, 14 Aug 2015 01:43:40 -0400 Subject: App filtering --- .../pwdstore/autofill/AutofillRecyclerAdapter.java | 42 +++++++++++++++++++--- 1 file changed, 38 insertions(+), 4 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 485ef288..2162b53d 100644 --- a/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillRecyclerAdapter.java +++ b/app/src/main/java/com/zeapo/pwdstore/autofill/AutofillRecyclerAdapter.java @@ -4,7 +4,9 @@ import android.content.Context; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.support.v7.util.SortedList; import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.util.SortedListAdapterCallback; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -14,9 +16,11 @@ import android.widget.TextView; import com.zeapo.pwdstore.R; import java.util.ArrayList; +import java.util.List; public class AutofillRecyclerAdapter extends RecyclerView.Adapter { - private ArrayList apps; + private SortedList apps; + private ArrayList allApps; private PackageManager pm; private AutofillPreferenceActivity activity; @@ -43,8 +47,26 @@ public class AutofillRecyclerAdapter extends RecyclerView.Adapter apps, PackageManager pm, AutofillPreferenceActivity activity) { - this.apps = apps; + public AutofillRecyclerAdapter(List allApps, final PackageManager pm, AutofillPreferenceActivity activity) { + SortedList.Callback callback = new SortedListAdapterCallback(this) { + @Override + public int compare(ResolveInfo o1, ResolveInfo o2) { + return o1.loadLabel(pm).toString().compareTo(o2.loadLabel(pm).toString()); + } + + @Override + public boolean areContentsTheSame(ResolveInfo oldItem, ResolveInfo newItem) { + return oldItem.loadLabel(pm).toString().equals(newItem.loadLabel(pm).toString()); + } + + @Override + public boolean areItemsTheSame(ResolveInfo item1, ResolveInfo item2) { + return item1.loadLabel(pm).toString().equals(item2.loadLabel(pm).toString()); + } + }; + this.apps = new SortedList<>(ResolveInfo.class, callback); + this.apps.addAll(allApps); + this.allApps = new ArrayList<>(allApps); this.pm = pm; this.activity = activity; } @@ -102,6 +124,18 @@ public class AutofillRecyclerAdapter extends RecyclerView.Adapter