Advertisement
nigatigga

Untitled

Sep 2nd, 2014
346
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.06 KB | None | 0 0
  1. package com.ibc.android.demo.appslist.app;
  2.  
  3. import android.app.Activity;
  4. import android.content.Context;
  5. import android.content.SharedPreferences;
  6. import android.content.pm.PackageInfo;
  7. import android.content.pm.PackageManager;
  8. import android.graphics.Typeface;
  9. import android.graphics.drawable.Drawable;
  10. import android.view.LayoutInflater;
  11. import android.view.View;
  12. import android.view.View.OnClickListener;
  13. import android.view.ViewGroup;
  14. import android.widget.BaseAdapter;
  15. import android.widget.CheckBox;
  16. import android.widget.Filter;
  17. import android.widget.Filterable;
  18. import android.widget.TextView;
  19.  
  20. import com.spicycurryman.getdisciplined10.app.R;
  21.  
  22. import java.util.ArrayList;
  23. import java.util.HashSet;
  24. import java.util.List;
  25. import java.util.Locale;
  26. import com.ibc.android.demo.appslist.app.ApkAdapter.IFilteredListListener;
  27.  
  28. import com.ibc.android.demo.appslist.app.ApkAdapter.IFilterableItem;
  29.  
  30. //
  31.  
  32. public class ApkAdapter extends BaseAdapter implements IFilteredListListener<PackageInfo>, IFilterableItem<PackageInfo> {
  33.  
  34.     //Pastebin link:  http://pastebin.com/LGRicg4U , http://pastebin.com/c4WfmhMK , http://pastebin.com/gFuuM4dY, http://pastebin.com/4Q7EP9G4
  35.     // http://pastebin.com/Te2g072w,  http://pastebin.com/NLT5iUiA ,
  36.  
  37.     SharedPreferences sharedPrefs;
  38.     SharedPreferences sharedPrefsapp;
  39.  
  40.     List<PackageInfo> packageList;
  41.     TextView appnamestyle;
  42.  
  43.     Activity context;
  44.     PackageManager packageManager;
  45.     boolean[] itemChecked;
  46.     HashSet checked;
  47.     Filter mFilter;
  48.  
  49.     String PACKAGE_NAME;
  50.  
  51.     TextView appname;
  52.  
  53.     public ApkAdapter(Activity context, List<PackageInfo> packageList,
  54.                       PackageManager packageManager) {
  55.         super();
  56.         this.context = context;
  57.  
  58.         this.packageList = packageList;
  59.         this.packageManager = packageManager;
  60.         itemChecked = new boolean[packageList.size()];
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.     }
  68.  
  69.     @Override
  70.     public Filter getFilter() {
  71.         return null;
  72.     }
  73.  
  74.     @Override
  75.     public String getStringForFilter(PackageInfo item) {
  76.         return null;
  77.     }
  78.  
  79.     @Override
  80.     public void onSearchResult(List<PackageInfo> objects) {
  81.  
  82.     }
  83.  
  84.     private class ViewHolder {
  85.         TextView apkName;
  86.         CheckBox ck1;
  87.         TextView packageName;
  88.  
  89.  
  90.  
  91.     }
  92.  
  93.  
  94.  
  95.  
  96.     public int getCount() {
  97.         return packageList.size();
  98.     }
  99.  
  100.     public Object getItem(int position) {
  101.         return packageList.get(position);
  102.     }
  103.  
  104.     public long getItemId(int position) {
  105.         return 0;
  106.     }
  107.  
  108.     @Override
  109.     public View getView(final int position, View convertView, ViewGroup parent) {
  110.         final ViewHolder holder;
  111.  
  112.         LayoutInflater inflater = context.getLayoutInflater();
  113.  
  114.         if (convertView == null) {
  115.             convertView = inflater.inflate(R.layout.installed_apps, null);
  116.             holder = new ViewHolder();
  117.  
  118.             holder.apkName = (TextView) convertView
  119.                     .findViewById(R.id.appname);
  120.             holder.apkName.setTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/raleway-medium.otf"));
  121.  
  122.             holder.ck1= (CheckBox)convertView
  123.                     .findViewById(R.id.checkBox1);
  124.             holder.packageName = (TextView) convertView.findViewById(R.id.app_package);
  125.  
  126.  
  127.  
  128.             convertView.setTag(holder);
  129.             //holder.ck1.setTag(packageList.get(position));
  130.  
  131.         } else {
  132.  
  133.             holder = (ViewHolder) convertView.getTag();
  134.         }
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.         // ViewHolder holder = (ViewHolder) convertView.getTag();
  145.         final PackageInfo packageInfo = (PackageInfo) getItem(position);
  146.  
  147.  
  148.  
  149.         Drawable appIcon = packageManager
  150.                 .getApplicationIcon(packageInfo.applicationInfo);
  151.  
  152.  
  153.  
  154.         // Make sure to define it again!
  155.         PACKAGE_NAME = packageInfo.packageName;
  156.  
  157.  
  158.         final String appName = packageManager.getApplicationLabel(
  159.                 packageInfo.applicationInfo).toString();
  160.         appIcon.setBounds(0, 0, 80, 80);
  161.         holder.apkName.setCompoundDrawables(appIcon, null, null, null);
  162.         holder.apkName.setCompoundDrawablePadding(15);
  163.         holder.apkName.setText(appName);
  164.         //holder.packageName.setText(PACKAGE_NAME);
  165.  
  166.  
  167.         holder.ck1.setChecked(false);
  168.  
  169.  
  170.         if (itemChecked[position])
  171.             holder.ck1.setChecked(true);
  172.         else
  173.             holder.ck1.setChecked(false);
  174.  
  175.  
  176.  
  177.  
  178.         // CHANGE UP EVERYTHING! MAKE THIS SHIT WORK, TIGGA!
  179.  
  180.  
  181.  
  182.  
  183.  
  184.         checked = new HashSet();
  185.  
  186.             PACKAGE_NAME = packageInfo.packageName;
  187.             //Log.d("just here: ", PACKAGE_NAME);
  188.  
  189.             sharedPrefs = context.getSharedPreferences(context.getApplicationContext().getPackageName(), Context.MODE_PRIVATE);
  190.             sharedPrefsapp = context.getSharedPreferences("appdb", Context.MODE_PRIVATE);
  191.  
  192.  
  193.  
  194.  
  195.  
  196.         holder.ck1.setChecked(sharedPrefs.getBoolean(PACKAGE_NAME,false));
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.         holder.ck1.setOnClickListener(new OnClickListener() {
  205.  
  206.             @Override
  207.             public void onClick(View v) {
  208.  
  209.  
  210.  
  211.                 SharedPreferences.Editor editor = context.getSharedPreferences(context.getApplicationContext().getPackageName(), Context.MODE_PRIVATE).edit();
  212.                 SharedPreferences.Editor editorapp = context.getSharedPreferences("appdb", Context.MODE_PRIVATE).edit();
  213.  
  214.                 if (holder.ck1.isChecked()) {
  215.  
  216.                     itemChecked[position] = true;
  217.                     holder.ck1.setChecked(true);
  218.                     editor.putBoolean(packageInfo.packageName, true);
  219.                     editorapp.putString(packageInfo.packageName, packageInfo.packageName);
  220.  
  221.  
  222.  
  223.                     editor.apply();
  224.                     editorapp.apply();
  225.  
  226.                    // sharedPrefs = context.getSharedPreferences(context.getApplicationContext().getPackageName(), Context.MODE_PRIVATE);
  227.  
  228.  
  229.                 } else {
  230.                     itemChecked[position] = false;
  231.                     holder.ck1.setChecked(false);
  232.                     editor.putBoolean(packageInfo.packageName, false);
  233.                     editorapp.remove(packageInfo.packageName);
  234.  
  235.  
  236.                     editor.apply();
  237.                     editorapp.apply();
  238.                     //sharedPrefs = context.getSharedPreferences(context.getApplicationContext().getPackageName(), Context.MODE_PRIVATE);
  239.  
  240.  
  241.  
  242.  
  243.                 }
  244.  
  245.             }
  246.  
  247.  
  248.  
  249.         });
  250.  
  251.  
  252.  
  253.  
  254.  
  255.         return convertView;
  256.  
  257.     }
  258.  
  259.  
  260.     public interface IFilteredListListener<T> extends Filterable {
  261.         public void onSearchResult(List<T> objects);
  262.     }
  263.  
  264.  
  265.     public interface IFilterableItem<T> {
  266.         public String getStringForFilter(T item);
  267.     }
  268.  
  269.     public class ListFilter<T> extends Filter {
  270.  
  271.         private List<T> adapterFilterElements;
  272.         private List<T> originalFilterElements;
  273.         private final Object mLock = new Object();
  274.  
  275.         private List<String> originalFilterValues;
  276.         private IFilteredListListener<T> listener;
  277.         private BaseAdapter baseAdapter;
  278.         private IFilterableItem<T> filterableItem;
  279.  
  280.         public ListFilter(List<T> originalElements, BaseAdapter baseAdapter, IFilteredListListener<T> listener, IFilterableItem<T> filterableItem) {
  281.             this.adapterFilterElements = originalElements;
  282.             this.originalFilterElements = originalElements;
  283.             this.baseAdapter = baseAdapter;
  284.             this.listener = listener;
  285.             this.filterableItem = filterableItem;
  286.         }
  287.  
  288.         @Override
  289.         protected FilterResults performFiltering(CharSequence prefix) {
  290.             FilterResults results = new FilterResults();
  291.             if (originalFilterValues == null) {
  292.                 synchronized (mLock) {
  293.                     originalFilterValues = fillListNamesFromItems(adapterFilterElements);
  294.                 }
  295.             }
  296.             if (prefix == null || prefix.length() == 0) {
  297.                 ArrayList<String> list;
  298.                 synchronized (mLock) {
  299.                     list = new ArrayList<String>(originalFilterValues);
  300.                 }
  301.                 results.values = list;
  302.                 results.count = list.size();
  303.             } else {
  304.                 String prefixString = prefix.toString().toLowerCase(Locale.UK);
  305.                 ArrayList<String> values;
  306.                 synchronized (mLock) {
  307.                     values = new ArrayList<String>(originalFilterValues);
  308.                 }
  309.                 final int count = values.size();
  310.                 final ArrayList<String> newValues = new ArrayList<String>();
  311.                 for (int i = 0; i < count; i++) {
  312.                     final String value = values.get(i);
  313.                     final String valueText = value.toString().toLowerCase(Locale.UK);
  314.                     // First match against the whole, non-splitted value
  315.                     if (valueText.startsWith(prefixString)) {
  316.                         newValues.add(value);
  317.                     } else {
  318.                         final String[] words = valueText.split(" ");
  319.                         final int wordCount = words.length;
  320.                         // Start at index 0, in case valueText starts with
  321.                         // space(s)
  322.                         for (int k = 0; k < wordCount; k++) {
  323.                             if (words[k].startsWith(prefixString)) {
  324.                                 newValues.add(value);
  325.                                 break;
  326.                             }
  327.                         }
  328.                     }
  329.                 }
  330.                 results.values = newValues;
  331.                 results.count = newValues.size();
  332.             }
  333.             return results;
  334.         }
  335.  
  336.         @SuppressWarnings("unchecked")
  337.         @Override
  338.         protected void publishResults(CharSequence constraint, FilterResults results) {
  339.             results.values = fillItemListFromNames((List<String>) results.values);
  340.             listener.onSearchResult((List<T>) results.values);
  341.             adapterFilterElements = (List<T>) results.values;
  342.             if (results.count > 0) {
  343.                 baseAdapter.notifyDataSetChanged();
  344.             } else {
  345.                 baseAdapter.notifyDataSetInvalidated();
  346.             }
  347.         }
  348.  
  349.         private List<T> fillItemListFromNames(List<String> names) {
  350.             List<T> ret = new ArrayList<T>();
  351.             if (names != null) {
  352.                 for (String s : names) {
  353.                     for (T p : originalFilterElements) {
  354.                         if (filterableItem.getStringForFilter(p).equals(s)) {
  355.                             ret.add(p);
  356.                             break;
  357.                         }
  358.                     }
  359.                 }
  360.             }
  361.  
  362.             return ret;
  363.         }
  364.  
  365.         private List<String> fillListNamesFromItems(List<T> items) {
  366.             List<String> ret = new ArrayList<String>();
  367.             if (items != null) {
  368.                 for (T item : items) {
  369.                     ret.add(filterableItem.getStringForFilter(item));
  370.                 }
  371.             }
  372.             return ret;
  373.         }
  374. }
  375. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement