2016-04-08 9 views
0

googleでgoogleでアプリを見てから、私はすぐにアプリの検索がどのくらい正確に機能しているのか不思議に思っていました。ここで カスタムビューを検索ビューに対応させるにはどうすればいいですか?

は、アプリの画像です:あなたは何か、消えてしまう一致していないカードを検索するたびに enter image description here

。私はカードが基本的にカスタムビューで、レイアウトはカスタムレイアウトだと思うので、どのように正確に達成しますか?私の問題は、私はカスタムビューの検索を実装する方法を知らないということです。

注:私は検索画面でインターネットの例をいくつか見てきましたが、私が望むものとは正確に異なるリストビューの検索の実装しか見つけることができません。

答えて

1

同様の問題があったので、カスタム表示プロパティ(名前、タグ、IDなど)を単一のスペースで区切られた単一の文字列にしました。

私のCustomViewクラス内でこのような何か:

public String toString() { 
    return (this.name + " " + this.tag + " " + this.coords + " " + this.id); 
} 

そして私は、示されたすべての現在のカスタムビューを使用して私のカスタムビューをフィルタ:

ArrayList<CustomView> filteredList = new ArrayList<>(); 
... 

private void filter(String constraint) { 
    for(CustomView view : AllViews) { 
     if (!filteredList.contains(view)) 
      if (view.toString().toLowerCase().contains(constraint.toLowerCase())) { 
       filteredList.add(view); 
       break; 
      } 
     } 
    } 
    // Do something to add the filteredList to your adapter 
    // and show the new list of CustomViews. 
} 

あなたはフィルタ(をnewText)メソッドを呼び出すことができますSearchView OnQueryTextListener()内のonQueryTextChange(String newText)の内部です。

このように、SearchViewに入力した単語がCustomViewのどこにあっても、対応するCustomViewが表示されます。そうしないと、ビューは「消えます」。

これが役に立ちます。

+0

うわー私は過去3時間見回していたので、その答えにとても感謝しています。本当にありがとう。しかし、私は簡単な質問があります。あなたの方法は、パフォーマンスのヒットが大きいビューの再測定と再レイアウトが必要です。これをよりスムーズに達成する方法はありますか? – Wowzer

+0

おそらくもっと良い解決策があります。それは問題を解決するために思いついた出発点です。トランジションをスムーズにするには、レイアウトが変化したときにフェードインするアニメーションを設定するか、レイアウト変更を自分で処理するように親レイアウトを設定します(これは私が行ったものです)。私はarround 10のカスタムビューを持っており、パフォーマンスに問題はありません。あなたがより良いまたはより速い方法を見つけるなら、私に教えてください:) –

関連する問題