我一直在Youtube上学习本教程,该教程教授如何过滤可回收的视图内容。
但我们有不同的实施方式。
我想要的应用程序有一个活动,它有一个搜索片段回收视图的搜索视图,而他的只有一个活动。
这是我的代码:主页活动
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);
}
碎片搜索
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-66262/com.example.erlcscabanig.thestoreapp E/dalvikvm:找不到类"android.graphics.drawable.RippeDrawable",该类引用自方法android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering07-12 13:54:56.948 1086-1479/system_process E/SoundPool:错误加载/system/medial/audio/ui/Effect_Tick.ogg07-12 13:54:56.948 1086-1479/system_process E/SoundPool:错误加载/system/medial/audio/ui/Effect_Tick.ogg07-12 13:54:56.958 1086-1479/system_process E/SoundPool:错误加载/system/medial/audio/ui/Effect_Tick.ogg07-12 13:54:56.978 1086-1479/system_process E/SoundPool:错误加载/system/medial/audio/ui/Effect_Tick.ogg07-12 13:54:56.978 1086-1479/system_process E/SoundPool:错误加载/system/medial/audio/ui/Effect_Tick.ogg07-12 13:54:56.988 1086-1479/system_process E/SoundPool:错误加载/系统/媒体/音频/ui/KeypressStandard.ogg07-12 13:54:57.008 1086-1479/system_process E/SoundPool:错误加载/系统/媒体/音频/ui/KeypressSpacebar.ogg07-12 13:54:57.018 1086-1479/system_process E/SoundPool:错误加载/system/medial/audio/ui/KeypressDelete.ogg07-12 13:54:57.018 1086-1479/system_process E/SoundPool:错误加载/系统/媒体/音频/ui/KeypressReturn.ogg07-12 13:54:57.038 1086-1479/system_process E/SoundPool:错误加载/system/medial/audio/ui/KeypressInvalid.ogg07-12 13:54:57.058 6262-66262/com.example.erlcscabanig.thestoreapp E/AndroidRuntime:致命异常:main流程:com.example.ellcscabanig.thestoreapp,PID:6262java.lang.NullPointerException网址:com.example.ellcscabanig.thestoreapp.sfragments.FragmentSearch.filterHandler(FragmentSearch.java:82(网址:com.example.erlcscabanig.thestoreapp.HomeActivity.onQueryTextChange(HomeActivity.java:144(
由于找不到从方法android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering引用的类"android.graphics.drawable.RippleDrawable",因此也存在一个NullPointer
可使用RecyclerView Adapter
进行用户筛选。这是用RecyclerView过滤数据的最佳方式。以下是一些演示示例,
- https://github.com/Wrdlbrnft/Searchable-RecyclerView-Demo
- https://www.androidhive.info/2017/11/android-recyclerview-with-search-filter-functionality/