Android Searchview 不在操作栏中在其他 View 上创建

标签 android android-actionbar android-custom-view searchview

我想将自定义搜索 View 框放在其他 View 上,但不在操作栏上。

与 Google map 应用程序中的搜索相同,左上角有“搜索”对话框。

当输入1个字符时更新数组列表结果。

我不知道自定义和创建SearchView的onQueryTextSubmit、onQueryTextChange方法。

如何编码。

谢谢。

最佳答案

这个概念与您在 ActionBar 中所做的相同。您需要将事件关联到 EditText,如下所示:

editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
                if (myAdapter != null) {
                    myAdapter.getFilter().filter(charSequence);
                }
            }

            @Override
            public void afterTextChanged(Editable editable) {

            }
        });

在适配器中,您可以实现过滤数据的逻辑。为此,您可以实现 Filterable 类。尝试这样的事情:

@Override
public Filter getFilter() {
        return new Filter() {
            @Override
            protected FilterResults performFiltering(CharSequence charSequence) {
                List<Object> filteredResult = getFilteredResults(charSequence);

                FilterResults results = new FilterResults();
                results.values = filteredResult;
                results.count = filteredResult.size();

                return results;
            }

            @Override
            protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
                listaFiltrada = (ArrayList<Documento>) filterResults.values;
                MyAdapter.this.notifyDataSetChanged();
            }


            private ArrayList<Object> getFilteredResults(CharSequence constraint){
                if (constraint.length() == 0){
                    return  listaDocumentos;
                }
                ArrayList<Object> listResult = new ArrayList<Object>();
                for (Object obj : listaTotal){
                    if (condition){
                        listResult.add(obj);
                    }
                }
                return listResult;
            }
        };
    }

希望对你有帮助!! :)

关于Android Searchview 不在操作栏中在其他 View 上创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26881352/

相关文章:

java - TextButton isPressed() 不起作用

安卓 fragment 化

android - 操作栏背景未更改

android - 我的自定义 View 没有显示,我应该如何修复它?

android - 下拉菜单背景在 Android 应用中变为黑色

java - 我可以创建一个既与 java 套接字通信又与 Web 套接字通信的 java 服务器吗

android - 自定义 View 中的涟漪效果

android - 在自定义 View 中使用进度条?

android - 将它与用于 android 搜索功能的 Rx-Java 一起使用时如何停止多个改造调用?

android - 在 Android 中设置高程仍然在 ActionBar 下方显示阴影