Android に 検 索 機能 と リ ス ト 表示 を 追加 す る 方法

検 索 結果 ペ ー ジ の ア ク シ ョ ン バ ー

  • Android 3.0, す る 。Android は SearchView ウ ェ ジ ッ ト を ア ク シ ョ ン バ ー に 追加 す る 機能 を サ ポ ー ト し て い ま す。 こ の 検 索 結果 ペ ペ ー ジ リ リ リ リ は 追加

SearchView に 関 す る 詳細 は こ ち ら
http://developer.android.com/training/search/setup.html

  • こ こ か ら 先 は 検 索 可能 な リ ス ト 表示 の 実 実 装 方法 で す

メ ニ ュ ー 検 索 を 追加 す る

  • メ ニ ュ ー に に 必要 な リ ソ ー ス ス を 検 索 メ ニ ュ ー ア イ テ ム と と と 一 緒 に 用意 す る。。 (検 索 メ ニ ュ ー ア イ テ ム を を 選 ア イ テ ム と と と 一 緒 に 用意 す る。 ((検 索 メ ニ ュ ー ア イ テ ム を 選 選 択 す テ ム と と と 一 緒 に 用意 す るる る (検 索 メ ニ ュ ー ア イ テ ム を 選 を 択 す テ ム と と と 一 緒 に 用意 す る る る (検 索 メ ニ ュ ー ア イ テ ム を を 選 択 す テ
  • 下 記 は サ ン プ ル の メ ニ ュ ー リ ソ ー ス で す。
<?xml version="1.0" encoding="utf-8"?>
<menu >="http://schemas.android.com/apk/res/android">
<item android:id="@+id/search"
android:title="Search"
android:icon="@drawable/search"
android:showAsAction="collapseActionView|ifRoom"
android:actionViewClass="android.widget.SearchView" />
</menu>
  • 上 記 の collapseActionView 属性 の メ ニ ュ ー ア イ テ ム は 、 SearchView が ア ク シ ョ ョ ン バ ー に 広 が り 、 使用 し て い な い と き は 通常 の ア ク シ ョ ク シ ョ ン バ ー に 広 が り 、 使用 し て い な い と き は 通常 の ア ク シ ョ ン

検 索 可能 な 設定 を 作 る

  • Configuração pesquisável は SearchView が ど の よ う に 動 く か 定義 し ま す。 xml (res / xml / searchable.xml) の 形 で 定義 付 け け す る 必要 が あ あ り ま す。 下 記 が。 xml (res / xml / searchable.xml) の 形 で 定義 付 け す る 必要 が あ り り ま す。 下 記 が が サ ン プ ル の 記 が サ configuração ン プ ル
<?xml version="1.0" encoding="utf-8"?>
<searchable
>="http://schemas.android.com/apk/res/android"
android:label="@string/app_name"
android:hint="Search friend">
</searchable>
  • そ し て 、 ア ア シ ョ ン に 関 連 す る 要素 を <meta-data> と 一 緒 に 追加 し ま す。
<activity
android:name=".ui.FriendListActivity"
android:screenOrientation="portrait"
android:configChanges="orientation"
android:theme="@style/Theme.Yello"
android:windowSoftInputMode="stateHidden"
android:launchMode="singleTask"
android:parentActivityName=".ui.SensorDetailsActivity">
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable">
</meta-data>
</activity>
  • シ ナ リ オ 例 と し て 、 SearchView に FriendListActivity を 追加 し ま す.

activity に SearchableConfiguration と メ ニ ュ ー を 追加 す る

  • atividade ク ラ ス に configuração pesquisável と SearchView を 関 連 付 け し ま す。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater
.inflate(R.menu.search_menu, menu);

SearchManager searchManager = (SearchManager)
getSystemService
(Context.SEARCH_SERVICE);
searchMenuItem
= menu.findItem(R.id.search);
searchView
= (SearchView) searchMenuItem.getActionView();

searchView
.setSearchableInfo(searchManager.
getSearchableInfo
(getComponentName()));
searchView
.setSubmitButtonEnabled(true);
searchView
.setOnQueryTextListener(this);

return true;
}
  • こ れ で Atividade に SearchView が 追加 さ れ ま し た。 し か し し 検 索 機能 は 完全 に 機能 し て い ま せ.

検 索 機能 を 追加 す る

  • Atividade に SearchView.OnQueryTextListener を 実 装 し ま す 。2 つ の 新 し い メ ソ ッ ド に に オ ー バ ー ラ イ ド す る 必要 が あ り ま す.
public boolean onQueryTextSubmit(String query)
public boolean onQueryTextChange(String newText)
  • こ の イ ン タ ー フ ェ ー ス は SearchView の Evento de alteração de texto に 影響 さ れ ま す
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}

@Override
public boolean onQueryTextChange(String newText) {
friendListAdapter
.getFilter().filter(newText);

return true;
}
  • OnQueryTextChange の 機能 は リ ス ト ア ア ダ タ ー の フ フ ィ ル タ リ ン グ グ を 実 実 行 し ま す。 フ ィ ル タ リ ン グ を 実 行 す る に は 、 ル タ リ ン グ を を 実 行 行 ま す。 フ ィ ル タ リ ン グ を を 実 行 す る に は 、 、 ア ダ は 、 行 し ま す
  • 下 記 リ ン ク 先 は FriendListActivity 対 応 す る 実 装 リ ス ト で す。 https://github.com/erangaeb/dev-notes/blob/master/android-search-list/FriendListActivity.java

フ ィ ル タ リ ン グ で き る ア ダ ダ タ ー

  • Filtrável 実 装 さ れ た BaseAdapter を 使 い ま す。
  • 下 記 は ア ダ プ タ ー プ ラ ス (FriendListAdapter) で す。 https://github.com/erangaeb/dev-notes/blob/master/android-search-list/FriendListAdapter.java
  • フ ィ ル タ リ ン グ す る た め に, FriendFilter に カ ス タ ム フ ィ ル タ ー を 設定 し ま す. こ こ で 2 つ の 配 列 リ ス ト を 定義 し て い ま す. 1 つ は リ ス ト ビ ュ ー で の 表示 用, も う 1 つ は フ ィ ル タ リ ン グ 用 の も の で す.
// original list, filtering do with this list
private ArrayList<User> friendList;

// filtered list construct by filtering the friendList
// it uses to create the list view
private ArrayList<User> filteredList;
  • 検 索 機能 が 使 使 え る よ う に な り ま す。 ア ウ ト ト プ ッ ト の サ ン プ ル で す。

プ ロ グ ラ ム ム で SearchView を 折 り た た む
* リ ス ト ア イ テ ム が 選 択 択 さ れ た 後 に 、 新 し い Atividade de compartilhamento de atividade に ナ ビ ゲ ー ト し ま す。。
* ナView View View

private void handelListItemClick(User user) {
// close search view if its visible
if (searchView.isShown()) {
searchMenuItem
.collapseActionView();
searchView
.setQuery("", false);
}

// pass selected user and sensor to share activity
Intent intent = new Intent(this, ShareActivity.class);
intent
.putExtra("com.score.senzors.pojos.User", user);
this.startActivity(intent);
this.overridePendingTransition(R.anim.right_in, R.anim.stay_in);
}

検 索 ク エ リ リ 入 力 中 に ポ ッ プ ア ッ プ テ キ ス ス ト を 表示 す る
* リ ス ト 表示 の フ フ ィ ル タ リ ン グ を ON に し ま す。
friendListView.setTextFilterEnabled(true);

  • onQueryTextChange を 下 記 の よ う に 設定 し ま す。 @Override
public boolean onQueryTextChange(String newText) {
if (TextUtils.isEmpty(newText)) {
friendListView
.clearTextFilter();
}
else {
friendListView
.setFilterText(newText.toString());
}

return true;
}
  • こ れ で searchview が ポ ッ プ ア ッ プ し て 表示 さ れ ま す。 こ れ は そ の ま ま SearchView に 入 録 し て い る 文字 が そ の ま ま 表示 さ れ の ま ま

andróide

ソ ー ス コ ー ド の 完全 版 は こ ち ら
https://github.com/erangaeb/dev-notes/tree/master/android-search-list