2017-09-09 9 views
0

Android general search functionalityは、音声検索に加えて最近のクエリの提案やカスタム提案などの検索候補を表示するための素晴らしいシステムサポートを持っているようです。searchviewと検索のヒントと音声検索を使用してリサイクルビューをフィルタリングする

このフレームワークでは、検索アクティビティを宣言する必要があります。そのアクティビティは、インテントでクエリを取得し、検索結果をListViewに提示します。

私はこの上の2つの質問があります:私は(私はアプリケーションバー上searchviewを持っている)、現在の活動で検索をしたい

1-。だから、その活動は再開されますか?それは変だ。私は目に見えない活動に送り、結果を取り戻すべきでしょうか?それは可能ですか?

2- ListViewではなくRecyclerViewを使用できますか? ListViewはRecyclerViewに代わって非難されていると私は思った。

答えて

0

私は現在のアクティビティで検索したい(私はappbarにsearchview を持っている)。だから、その活動は再開されますか?

(あなたはもちろんの検索権利を実装する場合)第

私はRecyclerViewの代わりに、リストビューを使用できますか?私はListViewが であり、RecyclerViewのために推奨されないと考えました。

はい、あなたはRecyclerViewで検索を実行するために何をすべきか、あなたがこのようなあなたのデータクラス何かのListのパラメータを使用して、アダプタクラスのパブリックメソッドを作成する必要があります。基本的RecyclerView

を使用することができます:

public void setFilter(ArrayList<Items> ItemList){ 
    Items = new ArrayList<>(); 
    Items.addAll(ItemList); 
    notifyDataSetChanged(); 
    //Items will be your custom data class 
} 
あなたが SearchView.OnQueryTextListenerインターフェイスを実装した後に検索を実装したいあなた Activityで次に

とオーバーライドメソッドonQueryTextSubmitonQueryTextChangeonQueryTextChangeにあなたはこのような何かを行うことができます。

@Override 
public boolean onQueryTextChange(String newText) { 
    newText = newText.toLowerCase(); 
    ArrayList<Items> ItemArrayList = new ArrayList<>(); 
    for(Items Item : Items) //Items your data class containg data provided to adapter 
    { 
     String name = Item.getTitle().toLowerCase(); // getTitle or getName dependes what you have in Item class 
     if(name.contains(newText)) 
      ItemArrayList.add(Item); 
    } 
    adapter.setFilter(ItemArrayList); // adapter will be instance of adapter class 
    return true; 
} 
+0

これはOKですが、どのように私は提案や音声検索を追加することができますか? – user9144

+0

アダプタで新しい内部クラスを作成し、 'Filter'を拡張して音声検索を行うと、音声を文字列に変換して' onQueryTextChange'を変換して、変換された単語をパラメータとして提供しようとします。 – Yupi

関連する問題