Ваша Searchable
активность должна что-то делать - и на самом деле отображать результаты.
Я только что написал один из предложенных в ответе на вопрос, который я задал вчера Попытка отфильтровать ListView с помощью runQueryOnBackgroundThread, ноничего не происходит - что мне не хватает?
Посмотрите эту документацию, чтобы узнать, как интегрировать ее со встроенной поддержкой поиска: Использование диалогового окна поиска Android и посмотрите эту статью о том, какчтобы предлагать предложения в качестве типов клиентов: Добавление пользовательских предложений
Ваш класс Searchable
должен получить немного больше после получения строки запроса.Например, в своей деятельности после получения строки запроса я делаю это:
showResults(query);
, и этот метод выглядит следующим образом:
private void showResults(String query) {
// Load the list of countries based on the query
Cursor countryCursor = myDbHelper.getCountryList (query);
startManagingCursor (countryCursor);
// Hook up the query results to the list view
String[] from = new String[] {
WorldInfoDatabaseAdapter.KEY_COUNTRYCODE, WorldInfoDatabaseAdapter.KEY_COUNTRYNAME
};
int[] to = new int[] {
R.id.countryflag, R.id.countryname
};
SimpleCursorAdapter adapter = new SimpleCursorAdapter (this,
R.layout.country_list_row, countryCursor, from, to);
adapter.setViewBinder (new FlagViewBinder ());
myCountryList.setAdapter (adapter);
myCountryList.setOnItemClickListener (new OnItemClickListener () {
@Override
public void onItemClick (AdapterView<?> parent, View view, int position, long id) {
String countryName = myDbHelper.getCountryByID (id);
if (countryName == null) {
new AlertDialog.Builder (SelectCountryActivity.this).setMessage (
"Internal error: Cannot find the country with id'" + id + "'.").show ();
return;
}
// Package up the country name to return
Intent newCountryIntent = new Intent (myCountryList.getContext (), WorldInfoActivity.class);
newCountryIntent.putExtra (WorldInfoActivity.KEY_SELECTED_COUNTRY, countryName);
startActivity (newCountryIntent);
startActivity (newCountryIntent);
finish ();
}
});
}
Член myDbHelper запрашивает в моей базе данных страны, в которых естьпередается в строке запроса и отображает их в виде списка.Моя деятельность имеет макет, который выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
style="?pageBackground">
<TextView
android:id="@+id/selectdlgtitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/select_country_title"
style="?dlgTitle" />
<ListView
android:id="@+id/countrylist"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cacheColorHint="#00000000"
android:padding="2px"/>
</LinearLayout>
Вы, вероятно, можете обойтись без вызова setViewBinder
- мне это нужно, потому что я перевожу поле кода страны в значок флага.