2017-10-16 138 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); 

這是我的適配器使用setfilter功能

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

搜索工作得很好,onQueryTextChange ,但過濾適配器和顯示的RecyclerView,當我點擊過濾後/搜索我的recyclerview上的項目,它不打開該特定項目,而是打開另一個不在篩選列表中的項目。

+0

添加您的整個適配器代碼的東西在這裏之前Arraylist。 – Radhey

回答

0

試試這個。將search_list分配給現有的數組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(); 
}