Searchview活动更改的片段内容

时间:2018-07-12 05:54:08

标签: android android-recyclerview searchview

我一直在Youtube的本教程中学习如何过滤recyclerview内容。

但是我们有不同的实现方式。

我想要的应用程序具有活动,该活动具有一个搜索视图,该视图搜索片段回收视图,而他只有一个活动。

这是我的代码: HomeActivity

 FragmentSearch fs;   
fs = new FragmentSearch();
    @Override
public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.search_menu, menu);
    SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
    searchView.setOnQueryTextListener(this);
    return true;
}
@Override
public boolean onQueryTextSubmit(String query) {

    return false;
}

@Override
public boolean onQueryTextChange(String newText) {
   return fs.filterHandler(newText);
}

FragmentSearch

 public boolean filterHandler(String newText){
    newText = newText.toLowerCase();
    ArrayList<Product> newList = new ArrayList<>();
    for(Product product: productArrayList){
        String name = product.getName().toLowerCase();
        if(name.contains(newText)){
            newList.add(product);
        }
    }
    adapter.setFilter(newList);
    return true;
}

区别在于OnQueryTextSubmit,我试图在片段中创建一个方法来接受用户查询

错误:

  

07-12 13:54:52.038 6262-6262 / com.example.earlcscabanig.thestoreapp E / dalvikvm:找不到类android.graphics.drawable.RippleDrawable,该类从方法android.support.v7.widget引用.AppCompatImageHelper.hasOverlappingRendering   07-12 13:54:56.948 1086-1479 / system_process E / SoundPool:错误加载/system/media/audio/ui/Effect_Tick.ogg   07-12 13:54:56.948 1086-1479 / system_process E / SoundPool:错误加载/system/media/audio/ui/Effect_Tick.ogg   07-12 13:54:56.958 1086-1479 / system_process E / SoundPool:错误加载/system/media/audio/ui/Effect_Tick.ogg   07-12 13:54:56.978 1086-1479 / system_process E / SoundPool:错误加载/system/media/audio/ui/Effect_Tick.ogg   07-12 13:54:56.978 1086-1479 / system_process E / SoundPool:错误加载/system/media/audio/ui/Effect_Tick.ogg   07-12 13:54:56.988 1086-1479 / system_process E / SoundPool:错误加载/system/media/audio/ui/KeypressStandard.ogg   07-12 13:54:57.008 1086-1479 / system_process E / SoundPool:错误加载/system/media/audio/ui/KeypressSpacebar.ogg   07-12 13:54:57.018 1086-1479 / system_process E / SoundPool:错误加载/system/media/audio/ui/KeypressDelete.ogg   07-12 13:54:57.018 1086-1479 / system_process E / SoundPool:错误加载/system/media/audio/ui/KeypressReturn.ogg   07-12 13:54:57.038 1086-1479 / system_process E / SoundPool:错误加载/system/media/audio/ui/KeypressInvalid.ogg   07-12 13:54:57.058 6262-6262 / com.example.earlcscabanig.thestoreapp E / AndroidRuntime:FATAL EXCEPTION:main       流程:com.example.earlcscabanig.thestoreapp,PID:6262       java.lang.NullPointerException           在com.example.earlcscabanig.thestoreapp.fragments.FragmentSearch.filterHandler(FragmentSearch.java:82)           在com.example.earlcscabanig.thestoreapp.HomeActivity.onQueryTextChange(HomeActivity.java:144)

还有一个 NullPointer ,因为找不到方法“ android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering”所引用的类“ android.graphics.drawable.RippleDrawable”

1 个答案:

答案 0 :(得分:0)

具有RecyclerView Adapter的用户Filterable。这是使用RecyclerView筛选数据的最佳方法。以下是一些演示示例,

  1. https://github.com/Wrdlbrnft/Searchable-RecyclerView-Demo
  2. https://www.androidhive.info/2017/11/android-recyclerview-with-search-filter-functionality/
相关问题