【问题标题】:How to filter list from data class如何从数据类中过滤列表
【发布时间】:2022-01-22 21:26:48
【问题描述】:

我有 JSON 响应:

{
    "response" : [
        {
            "f_name"    : "иВан",
            "l_name"    : "ИваноВ",
            "birthday"  : "1987-03-23",
            "avatr_url" : "https://2.cdn.echo.msk.ru/files/avatar2/2561900.jpg",
            "specialty" : [{
                "specialty_id" : 101,
                "name"  : "Менеджер"
            }]
        },
        {
            "f_name"    : "Петр",
            "l_name"    : "петроВ",
            "birthday"  : null,
            "avatr_url" : "https://2.cdn.echo.msk.ru/files/avatar2/1253126.jpg",
            "specialty" : [{
                "specialty_id" : 101,
                "name"  : "Менеджер"
            }]
        },
        {"f_name"   : "ЕКАТЕРИНА",
        "l_name"    : "пертрова",
        "birthday"  : "1990-01-07",
        "avatr_url" : "",
        "specialty" : [{
            "specialty_id" : 102,
            "name"  : "Разработчик"
            }]

    "specialty" : [{
        "specialty_id" : 102,
        "name"  : "Разработчик"
        }]
 

和模型中的数据类:

 data class Response(
        @SerializedName("avatr_url")
        val avatrUrl: String,
        val birthday: String,
        @SerializedName("f_name")
        val fName: String,
        @SerializedName("l_name")
        val lName: String,
        val specialty: List<Specialty>
    )
    data class Specialty(
        val name: String,
        @SerializedName("specialty_id")
        val specialtyId: Int
    )

需要为每个职业过滤显示在 RecyclerView 中的 Response 元素列表。我在 Presenter 中加载整个列表的数据:

val data = Employee.repository.getEmployeesInfo() 
                    .response

我应该如何通过 specialId 属性过滤项目列表以形成只有一个职业的人的列表?

【问题讨论】:

    标签: android kotlin filter mvp


    【解决方案1】:

    此方法中的逻辑应该可以工作:

    fun filterBySpecialty(employees: List<Response>, specialtyId: Int): List<Response> =
        employees.filter { employee -> 
            employee.specialty.any { specialty -> 
                specialtyId == specialty.specialtyId 
            } 
        }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多