diff --git a/src/net/i2p/android/router/fragment/AddressbookFragment.java b/src/net/i2p/android/router/fragment/AddressbookFragment.java index 333dff74a5474d966a1b21f5f6d2fb190fa8e700..ac912a726699235233bcf9d690920322aad01782 100644 --- a/src/net/i2p/android/router/fragment/AddressbookFragment.java +++ b/src/net/i2p/android/router/fragment/AddressbookFragment.java @@ -7,6 +7,7 @@ import android.os.Bundle; import android.support.v4.app.ListFragment; import android.support.v4.app.LoaderManager; import android.support.v4.content.Loader; +import android.text.TextUtils; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; @@ -36,6 +37,7 @@ public class AddressbookFragment extends ListFragment implements OnAddressSelectedListener mCallback; private AddressEntryAdapter mAdapter; private String mBook; + private String mCurFilter; // Container Activity must implement this interface public interface OnAddressSelectedListener { @@ -128,7 +130,9 @@ public class AddressbookFragment extends ListFragment implements } public void filterAddresses(String query) { - mAdapter.getFilter().filter(query); + mCurFilter = !TextUtils.isEmpty(query) ? query : null; + getLoaderManager().restartLoader("private".equals(mBook) ? + PRIVATE_LOADER_ID : ROUTER_LOADER_ID, null, this); } // Duplicated from I2PFragmentBase because this extends ListFragment @@ -140,7 +144,7 @@ public class AddressbookFragment extends ListFragment implements public Loader<List<AddressEntry>> onCreateLoader(int id, Bundle args) { return new AddressEntryLoader(getActivity(), - getRouterContext(), mBook); + getRouterContext(), mBook, mCurFilter); } public void onLoadFinished(Loader<List<AddressEntry>> loader, diff --git a/src/net/i2p/android/router/loader/AddressEntryLoader.java b/src/net/i2p/android/router/loader/AddressEntryLoader.java index 39bbbec56a541953810604e5dec449de0eec1812..a513f10b8da32e4d7f143e7d687946ecf1c2d66c 100644 --- a/src/net/i2p/android/router/loader/AddressEntryLoader.java +++ b/src/net/i2p/android/router/loader/AddressEntryLoader.java @@ -2,6 +2,7 @@ package net.i2p.android.router.loader; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Set; import java.util.TreeSet; @@ -16,12 +17,15 @@ public class AddressEntryLoader extends AsyncTaskLoader<List<AddressEntry>> { private static final String DEFAULT_NS = "BlockfileNamingService"; private RouterContext mRContext; private String mBook; + private String mFilter; private List<AddressEntry> mData; - public AddressEntryLoader(Context context, RouterContext rContext, String book) { + public AddressEntryLoader(Context context, RouterContext rContext, + String book, String filter) { super(context); mRContext = rContext; mBook = book; + mFilter = filter; } @Override @@ -34,6 +38,10 @@ public class AddressEntryLoader extends AsyncTaskLoader<List<AddressEntry>> { Set<String> names = new TreeSet<String>(); names.addAll(ns.getNames()); for (String hostName : names) { + if (mFilter != null && !hostName.toLowerCase(Locale.US).contains( + mFilter.toLowerCase(Locale.US))) + continue; + AddressEntry name = new AddressEntry(hostName); ret.add(name); }