键盘显示/隐藏时防止列表视图刷新

时间:2014-10-13 03:40:28

标签: android listview android-listview keyboard

我注意到android中存在奇怪的行为。

我有一个包含列表视图和搜索栏的视图。

当搜索栏被聚焦并且在显示键盘之后,列表视图适配器中的项目将调用getView,如果搜索栏失去焦点也会再次发生,并且在键盘被隐藏之前,它会导致一些滞后性能,尤其是在隐藏键盘之前,因为它会等到所有项目都刷新。

有没有解决方法?

2 个答案:

答案 0 :(得分:1)

只需在Android Manifest文件中声明键盘配置即可。在清单中定义Activity的位置,只需在其中添加一行,如下所示:

android:configChanges="keyboardHidden|orientation"

答案 1 :(得分:0)

在您的活动中,只需将

放在oncreate()方法中
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED);

然后,在searchView.setOnQueryTextListener-> public boolean onQueryTextChange中,如果输入的文本不在您的存储列表中,则将其放在行

 listView.setVisibility(View.GONE);
                    //to hide the keyboard
                    methodManager = (InputMethodManager) getSystemService(getApplication().INPUT_METHOD_SERVICE);
                    methodManager.hideSoftInputFromWindow(searchView.getWindowToken(),0);

如果出现文本,

listView.setVisibility(View.VISIBLE);

并在任何循环结束后重置列表适配器...

listAdapter.notifyDataSetChanged();

希望您申请得很整齐。