我想将自定义搜索视图框放在其他视图上,而不要放在操作栏上。

与在Google Maps Application中搜索相同,在左上角有“搜索”对话框。

输入1个字符以更新arraylist结果时。

我不知道自定义和创建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;
            }
        };
    }


希望对您有帮助!! :)

07-24 09:33