【问题标题】:How To Search data from RecyclerView Retrofit Kotlin Android Studio?如何从 RecyclerView Retrofit Kotlin Android Studio 中搜索数据?
【发布时间】:2020-11-18 03:17:22
【问题描述】:

如何在 RecyclerView 中搜索数据?

我有这样的模型,我通过改造获得数据。我必须用这样的模型数据制作 RecyclerView 以及如何从 RecyclerView 进行搜索?

data class ListArticle(
@SerializedName("status") val status : String,
@SerializedName("totalResults") val totalResults : Int,
@SerializedName("articles") val articles : List<Articles>
)

data class Source (

@SerializedName("id") val id : String,
@SerializedName("name") val name : String
)

data class Articles (

@SerializedName("source") val source : Source,
@SerializedName("author") val author : String,
@SerializedName("title") val title : String,
@SerializedName("description") val description : String,
@SerializedName("url") val url : String,
@SerializedName("urlToImage") val urlToImage : String,
@SerializedName("publishedAt") val publishedAt : String,
@SerializedName("content") val content : String
)

【问题讨论】:

  • 这是个大问题!到目前为止你搜索了什么?到目前为止你做了什么?您正在连接的 API 是在过滤,还是在获取所有内容并在本地进行过滤?你能缩小问题的范围吗?

标签: android-studio kotlin search android-recyclerview retrofit


【解决方案1】:

必须解决这个问题,很抱歉没有完成问题

刚刚将它添加到您的适配器中

fun getFilter(): Filter? {
    return articleFilter
}

private val articleFilter: Filter = object : Filter() {
    override fun performFiltering(constraint: CharSequence?): FilterResults? {
        val filteredList: MutableList<Articles> = ArrayList()
        if (constraint == null || constraint.length == 0) {
            filteredList.addAll(articles)
        } else {
            val filterPattern =
                constraint.toString().toLowerCase().trim { it <= ' ' }
            for (item in articles) {
                if (item.title.toLowerCase().contains(filterPattern)) {
                    filteredList.add(item)
                }
            }
        }
        val results = FilterResults()
        results.values = filteredList
        return results
    }

    override fun publishResults(
        constraint: CharSequence?,
        results: FilterResults
    ) {
        searchArticles = results.values as List<Articles>
        notifyDataSetChanged()
    }
}

fun setData(article: List<Articles>){
    searchArticles = article
    notifyDataSetChanged()

}

【讨论】:

    猜你喜欢
    • 2018-07-30
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 2022-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多