2017-05-03 2 views
0

私の質問は2倍です。私はRxSearchViewを使っていました。私はmap,filterそして最後にswitchMapを使って、apiからの検索イベントを問い合わせました。まずmapまたはfilter機能では、私はこのようなUIを更新しました:RxSearchView検索

.filter(new Predicate<String>() { 
         @Override 
         public boolean test(String s) throws Exception { 
          if (searchViewQueryTextEvent.queryText().toString().length() < 3 && mUserList != null) { 
           mUserList.clear(); 
          getActivity().runOnUiThread(new Runnable() { 
           @Override 
           public void run() { 
            mUserSearchAdapter.notifyDataSetChanged(); 
           } 
          }); 
         } 
          return s.length() > 2; 
         } 
        }) 

だから、これらの関数の内部からUIを更新し続けることをお勧めですか? 第2に、文字の削除はこの方法では処理できませんでした。私に提案やリンクを教えてください。私はRxに新しいです。どうもありがとう!

答えて

1

これらの機能の中からUIを更新し続けるのはよい習慣ですか?

ここでrunOnUIThread()を使用する必要はありません。使用しないでください。リアクティブチェーン内のobserveOn演算子に複数の呼び出しを追加して、スレッドを切り替えることができます。ここでは、スレッド上でいくつかのリンクです:

第2に、このように文字を削除することはできませんでした。私に提案やリンクを教えてください。

フィルタリングの代わりにdebounce()演算子を使用する必要があります。 Droidcon Bostonのlink to my talkは、とswitchMap()との間で自動検索の問題について話しています。〜25時にスクロールします。文字の削除やblog postの削除を処理するdemo codeがあります。

こちらがお役に立てば幸いです。

+0

これは大きな助けになります。あなたの指導に感謝します。私はあなたのDroidconの話を見てください:) – Debdeep

関連する問題