2017-10-16 2 views
-2

onQueryTextChange のように、リサイクラーアダプターの検索を以下のように実行しようとしています。検索フィルターリサイクルアダプター

newText = newText.toLowerCase(); 
List<HymnDataModel> search_list = new ArrayList<>(); 

for(HymnDataModel hymnDataModel : hymnDataList){ 
       String hymn_title = hymnDataModel.getHymnTitle().toLowerCase(); 
       String hymn_subTitle = hymnDataModel.getHymnSubTitle().toLowerCase(); 
       if (hymn_title.contains(newText) || hymn_subTitle.contains(newText)){ 
        search_list.add(hymnDataModel); 
       } 
      } 

そして、私はsetFilterを使用してアダプタをフィルタリングします。

adapterRV.setFilter(search_list); 

これは私がフィルタ/検索をクリックすると検索は、onQueryTextChange うまく動作しますが、アダプターをフィルタリングし、RecyclerViewに表示した後、私のアダプタでのSetFilter機能

public void setFilter(List<HymnDataModel> search_list) { 
    mHymnsList = new ArrayList<>(); 
    mHymnsList.addAll(search_list); 
    //notify to reload 
    notifyDataSetChanged(); 
} 

です私のrecyclerviewのアイテム、それはその特定のアイテムを開くのではなく、フィルタリングされたリストにない別のアイテムを開きます。

+0

ここにあなたの全体のアダプタのコードのものを追加してみあなたのArraylist

でフィルタ項目を追加する前に。 – Radhey

答えて

0

は、既存の配列リストにこのinstead.Assign search_listを試してみてください。

public void setFilter(List<HymnDataModel> search_list) { 
    mHymnsList = search_list; 
    //notify to reload 
    notifyDataSetChanged(); 
} 
0

あなたはフィルタリングされたリストにはありませんなぜあなたのアダプタの表示項目のあなたのArraylistでフィルタリングされたデータ項目の追加をしています。これはクリアしてみてくださいあなたのArraylistこの

public void setFilter(List<HymnDataModel> search_list) { 
    mHymnsList.clear(); 
    mHymnsList.addAll(search_list); 

    or 
    mHymnsList = search_list; 

    //notify to reload 
    notifyDataSetChanged(); 
}