代码之家  ›  专栏  ›  技术社区  ›  Nitin Karande

如何使用RxJava和Kotlin从列表中获取Arraylist中的Json响应

  •  4
  • Nitin Karande  · 技术社区  · 8 年前

    在ArrayList中获取响应时遇到问题。

    我对字符串值有以下响应

     var res_message: String = ""
     res_message = "${result.vehicletypes} "
    

    正在获取低于此字符串的值

         [VehicleType(_id=1, vehicleType=Hatchback, __v=0), 
          VehicleType(_id=2, vehicleType=Maruti, __v=0), 
          VehicleType(_id=3, vehicleType=Honda, __v=0), 
          VehicleType(_id=4, vehicleType=Bike, __v=0)] 
    

    改装结果为

     vehicletypes = {ArrayList@6055}  size = 4
     0 = {Model$VehicleType@6058} "VehicleType(_id=1, 
    vehicleType=Hatchback, __v=0)"
     1 = {Model$VehicleType@6059} "VehicleType(_id=2, 
     vehicleType=Maruti, __v=0)"
      2 = {Model$VehicleType@6060} "VehicleType(_id=3, 
     vehicleType=Honda, __v=0)"
      3 = {Model$VehicleType@6061} "VehicleType(_id=4, 
      vehicleType=Bike, __v=0)"
    

    下面的代码snippest向API发送请求。

                disposable = apiServices.getVehicle(token)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(
                        { result ->
    
    
                            res_message = "${result.vehicletypes} "
                            Log.d("Type==", res_message)
                        },
                        { error ->
                            res_message = "${error.message}"
                            // validateToken()
                        }
                )
    

    模型类

      data class Vehicles(val success: Boolean, val vehicletypes: List<VehicleType>, val message: String)
      data class VehicleType(val _id: String, val vehicleType: String, val __v: String)
    

    我想在Arralist上获取此值 车辆类型 在下面列出 车辆列表

       private var vehicleListArray: ArrayList<Model.VehicleType>? = null
    

    我们如何才能做到这一点。 提前谢谢。

    2 回复  |  直到 8 年前
        1
  •  1
  •   muminers    8 年前

    假设您试图解析的是来自服务的响应,该服务能够向您发送列表的propper格式(例如Json),而不是 改型可以轻松地处理解析列表。

    在apiService定义中:

    fun getPeople(token: Whatever): Observable<List<VehicleType>>
    

    如果您还没有:

    Retrofit.Builder()
       .addConverterFactory(GsonConverterFactory.create(gson))
    
        2
  •  0
  •   Vishal Yadav chetan mekha    8 年前

    我得到了我必须处理响应的解决方案,如下代码片段所示。

    private fun getVehicleType() { 
        disposable?.add(apiServices.getVehicle(token)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(this::handleResponse, this::handleError))
    }
    
    private fun handleResponse(vehicles: Model.Vehicles) {
        VehiclesArrayList = ArrayList(vehicles.vehicletypes)
        Log.d("type==","n--"+VehiclesArrayList )
        mAdapter = DataAdapter(VehiclesArrayList !!, this)
        v_android_list.adapter = mAdapter
    }
    
    private fun handleError(error: Throwable) {
        Log.d("type", error.localizedMessage)
        Toast.makeText(context, "Error ${error.localizedMessage}", Toast.LENGTH_SHORT).show()
    }