在ListView中实现搜索功能时出错

问题描述 投票:0回答:1

我在列表视图中实现了搜索,但失败得很厉害,然后从YOUTUBE视频中得到了一段和平的代码,但它在 JAVA 但我的工作是 KOTLIN当我在转换它时,我又失败了。KOTLIN 此代码 JAVA 编码

 @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;
            }

我失败的地方是植入了覆盖方法

java android android-studio kotlin kotlin-android-extensions
1个回答
0
投票

这里是你得到的运行 将Koltin功能转换为Android studio中内置的功能.

    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视频的链接,我会试着再看一下。

© www.soinside.com 2019 - 2024. All rights reserved.