我的应用程序中有一个SearchView,当我输入时,每个角色都会出现在一个奇怪的弹出窗口中,如下所示。
布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:focusable="true"
android:focusableInTouchMode="true"
android:background="@color/white"
tools:context="com.example.myapp">
<SearchView
android:id="@+id/search_view"
android:queryHint="@string/select_story_query_hint"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:divider="@color/gray"
android:dividerHeight="1dp"/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/create_new_story_button"
android:id="@+id/createStoryButton"
android:layout_gravity="center_horizontal"
android:layout_margin="10dp"
android:layout_marginBottom="5dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:background="@drawable/low_priority_button_background"
android:textColor="@color/black" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/done"
android:id="@+id/select_story_done"
android:layout_gravity="center_horizontal"
android:layout_margin="10dp"
android:layout_marginTop="5dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:background="@drawable/button_background"
android:textColor="@color/white" />
</LinearLayout>
代码:
mSearchView = (SearchView) view.findViewById(R.id.search_view);
mSearchView.setIconifiedByDefault(false);
mSearchView.setOnQueryTextListener(this);
mSearchView.setSubmitButtonEnabled(false);
mSearchView.setQueryHint(getString(R.string.query_hint));
监听器:
@Override
public boolean onQueryTextChange(String newText) {
if (TextUtils.isEmpty(newText)) {
mListView.clearTextFilter();
} else {
mListView.setFilterText(newText);
}
return true;
}
我搜索时似乎无法找到有关此问题的任何信息(猜测我没有使用正确的关键字)。这也发生在运行不同版本的Android的多个设备上(N5与5.1,O + O与4.4)并且只有这个特定字段存在此问题,所有其他EditText字段都没有问题。
答案 0 :(得分:1)
这与ListView
的过滤功能的内置功能有关。正如JonasCz指出的那样,如何解决这个问题可以找到here。我的代码更改为onQueryTextChange()
方法来解决此问题(基本上使用Adapter
的过滤器功能):
@Override
public boolean onQueryTextChange(String newText) {
Filter filter = adapter.getFilter();
if (TextUtils.isEmpty(newText)) {
filter.filter("");
} else {
filter.filter(newText);
}
return true;
}