Как я могу передать универсальный класс в GsonRequest
класс?Вот модель ответа моего API.
class APIResponse<T> {
var status:Boolean
var data:T?
var collection: ArrayList<T>?
var message:String?
constructor(status:Boolean, data:T?, collection: ArrayList<T>?, message:String?){
this.status = status
this.data = data
this.collection = collection
this.message = message
}
}
И это модели таблиц kotlin в моей базе данных.Используются для преобразования json в модели.
class ControlCategory {
var id:Int = 0
var name:String? = null
var control_points:ArrayList<ControlPoint> = ArrayList()
constructor(id:Int, name:String, control_points:ArrayList<ControlPoint>) {
this.id = id
this.name = name
this.control_points = control_points
}
}
class ControlPoint {
var id:Int
var name:String
var control_category: ControlCategory
constructor(id:Int, name:String, control_category:ControlCategory) {
this.id = id
this.name = name
this.control_category = control_category
}
}
Вот мой GsonRequest класс.
open class GsonRequest<T>(
url: String,
private val clazz: Class<T>,
private val headers: MutableMap<String, String>?,
private val listener: Response.Listener<T>,
errorListener: Response.ErrorListener
) : Request<T>(Method.GET, url, errorListener) {
protected val gson = Gson()
override fun getHeaders(): MutableMap<String, String> = headers ?: super.getHeaders()
override fun deliverResponse(response: T) = listener.onResponse(response)
override fun parseNetworkResponse(response: NetworkResponse?): Response<T> {
return try {
val json = String(
response?.data ?: ByteArray(0),
Charset.forName(HttpHeaderParser.parseCharset(response?.headers)))
Response.success(
gson.fromJson(json, clazz),
HttpHeaderParser.parseCacheHeaders(response))
} catch (e: UnsupportedEncodingException) {
Response.error(ParseError(e))
} catch (e: JsonSyntaxException) {
Response.error(ParseError(e))
}
}
}
Как я могу передать APIResponse<ControlCategory>
в GsonRequest
class ':
val controlPointsRequest = GsonRequest<APIResponse<ControlCategory>>(
getString(R.string.apiUrl)+"control-categories",
object: TypeToken<APIResponse<ControlCategory>>(){}.type,
headers,
listener,
error
);
Когда я передаю object: TypeToken<APIResponse<ControlCategory>>(){}.type
, это дает ошибку.