From fe6bb7c6a878490ef0795a5cc8a80fb57087dc73 Mon Sep 17 00:00:00 2001 From: cip Date: Fri, 5 Apr 2013 10:03:54 +0200 Subject: [PATCH] article suggestion: Changed implementation to use filter Cleaner, and does not block ui thread while retrieving article titles from zim file --- .../kiwixmobile/KiwixMobileActivity.java | 91 +++++++++++++------ 1 file changed, 64 insertions(+), 27 deletions(-) diff --git a/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java b/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java index 50f46ca7a..05c2764f0 100644 --- a/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java +++ b/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java @@ -11,6 +11,7 @@ import java.util.Arrays; import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.ComponentName; +import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; @@ -30,6 +31,8 @@ import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; +import android.widget.Filter; +import android.widget.Filterable; import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; import android.widget.Toast; @@ -45,6 +48,65 @@ public class KiwixMobileActivity extends Activity { private static final String PREFS_KIWIX_MOBILE = "kiwix-mobile"; + public class AutoCompleteAdapter extends ArrayAdapter implements Filterable { + private ArrayList mData; + + public AutoCompleteAdapter(Context context, int textViewResourceId) { + super(context, textViewResourceId); + mData = new ArrayList(); + } + + @Override + public int getCount() { + return mData.size(); + } + + @Override + public String getItem(int index) { + return mData.get(index); + } + + @Override + public Filter getFilter() { + Filter myFilter = new Filter() { + @Override + protected FilterResults performFiltering(CharSequence constraint) { + FilterResults filterResults = new FilterResults(); + ArrayList data = new ArrayList(); + if(constraint != null) { + // A class that queries a web API, parses the data and returns an ArrayList