Implemented Addressbook filtering via SearchView in action bar

This commit is contained in:
str4d
2013-08-14 01:47:10 +00:00
parent 058f41ec73
commit 9359c7a726
2 changed files with 29 additions and 3 deletions

View File

@ -5,13 +5,14 @@ import net.i2p.android.router.fragment.AddressbookFragment;
import android.app.SearchManager; import android.app.SearchManager;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.MenuItemCompat; import android.support.v4.view.MenuItemCompat;
import android.support.v7.widget.SearchView; import android.support.v7.widget.SearchView;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
public class AddressbookActivity extends I2PActivityBase { public class AddressbookActivity extends I2PActivityBase
implements SearchView.OnQueryTextListener {
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -31,6 +32,25 @@ public class AddressbookActivity extends I2PActivityBase {
MenuItem searchItem = menu.findItem(R.id.action_search_addressbook); MenuItem searchItem = menu.findItem(R.id.action_search_addressbook);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setOnQueryTextListener(this);
return super.onCreateOptionsMenu(menu); return super.onCreateOptionsMenu(menu);
} }
public boolean onQueryTextChange(String newText) {
filterAddresses(newText);
return true;
}
public boolean onQueryTextSubmit(String query) {
filterAddresses(query);
return true;
}
private void filterAddresses(String query) {
Fragment f = getSupportFragmentManager().findFragmentById(R.id.main_content);
if (f instanceof AddressbookFragment) {
AddressbookFragment af = (AddressbookFragment) f;
af.filterAddresses(query);
}
}
} }

View File

@ -24,6 +24,7 @@ import net.i2p.android.router.activity.AddressbookSettingsActivity;
import net.i2p.client.naming.NamingService; import net.i2p.client.naming.NamingService;
public class AddressbookFragment extends Fragment { public class AddressbookFragment extends Fragment {
private ArrayAdapter<String> mAdapter;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
@ -67,7 +68,8 @@ public class AddressbookFragment extends Fragment {
// set the list // set the list
List<String> nameList = new ArrayList<String>(names); List<String> nameList = new ArrayList<String>(names);
Collections.sort(nameList); Collections.sort(nameList);
lv.setAdapter(new ArrayAdapter<String>(getActivity(), R.layout.addressbook_list_item, nameList)); mAdapter = new ArrayAdapter<String>(getActivity(), R.layout.addressbook_list_item, nameList);
lv.setAdapter(mAdapter);
// set the callback // set the callback
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@ -107,4 +109,8 @@ public class AddressbookFragment extends Fragment {
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);
} }
} }
public void filterAddresses(String query) {
mAdapter.getFilter().filter(query);
}
} }