【发布时间】:2016-08-12 10:26:26
【问题描述】:
我使用以下内容为 RecyclerView 创建了一个搜索功能:
如何使用 SearchView 过滤 RecyclerView
我无法对其进行测试,因为显示的只是带有应用标题的应用栏。我期待(希望!)看到一个搜索图标操作按钮,我单击它以打开一个搜索字段。 (类似于附件中的演示)。
我有以下代码适用于启动搜索菜单:
search_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/search"
android:title="@string/search_title"
android:icon="@android:drawable/ic_menu_search"
app:actionViewClass="android.support.v7.widget.SearchView"
android:showAsAction="always|ifroom"
/>
</menu>
这是我的片段中的代码:
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.search_menu, menu);
final MenuItem item = menu.findItem(R.id.search);
final SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
searchView.setOnQueryTextListener(this);
}
我已经阅读了 android 开发者指南,但仍然无法弄清楚。任何人都可以建议我是否缺少任何东西?或者知道为什么它不显示?我完全被难住了!
【问题讨论】:
-
这是来自活动还是片段?
-
它来自一个片段!
-
你在
onCreateView()的某个地方给setHasOptionsMenu(true)打过电话吗? -
啊,不,我没有!但我只是尝试过,它抛出空指针异常:( java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.SearchView.setOnQueryTextListener(android.support.v7.widget.SearchView$OnQueryTextListener )' 在空对象引用上
-
您正在尝试将
search icon转换为searchview,您需要直接在工具栏中进行更改。