首页 > 解决方案 > 在 ListView 中实现搜索功能时出错

问题描述

我在列表视图中实现搜索但失败了,然后从 YOUTUBE 视频参考中获得了一段代码,但它在JAVA中,但我正在使用KOTLIN

当我转换它时,我又失败了。你能帮我这个JAVA代码的KOTLIN代码吗

 @Override
    public Filter getFilter() {
            Filter filter = new Filter() {
            @Override
            protected FilterResults performFiltering(CharSequence constraint) {

                FilterResults filterResults = new FilterResults();
                if(constraint == null || constraint.length() == 0){
                    filterResults.count = countryModelsList.size();
                    filterResults.values = countryModelsList;

                }else{
                    List<CountryModel> resultsModel = new ArrayList<>();
                    String searchStr = constraint.toString().toLowerCase();

                    for(CountryModel itemsModel:countryModelsList){
                        if(itemsModel.getCountry().toLowerCase().contains(searchStr)){
                            resultsModel.add(itemsModel);

                        }
                        filterResults.count = resultsModel.size();
                        filterResults.values = resultsModel;
                    }


                }

                return filterResults;
            }

我失败的地方是实现覆盖方法

标签: javaandroidandroid-studiokotlinkotlin-android-extensions

解决方案


这是通过运行android studio 中内置的 convert to Koltin 功能得到的。

    val filter: Filter
        get() {
            val filter: Filter = object : Filter() {
                protected fun performFiltering(constraint: CharSequence?): FilterResults {
                    val filterResults = FilterResults()
                    if (constraint == null || constraint.length == 0) {
                        filterResults.count = countryModelsList.size()
                        filterResults.values = countryModelsList
                    } else {
                        val resultsModel: List<CountryModel> = ArrayList<Any>()
                        val searchStr = constraint.toString().toLowerCase()
                        for (itemsModel in countryModelsList) {
                            if (itemsModel.getCountry().toLowerCase().contains(searchStr)) {
                                resultsModel.add(itemsModel)
                            }
                            filterResults.count = resultsModel.size()
                            filterResults.values = resultsModel
                        }
                    }
                    return filterResults
                }
            }
        }

如果这不起作用,请随时回复您的更多代码或 youtube 视频的链接,我会尝试再看一下。


推荐阅读