RecyclerView 中的两个 arrayList
Two arrayList in a RecyclerView
如何在同一个回收视图中显示两个 arrayList。
使用 resultado 变量进行调试是正确的。
如何让结果变量显示在 RecyclerView 中?
在我的 activity DetPartido:
val resultado = (response.body()!!.golesLocal)!! + (response.body()!!.golesVisitante)!!
Rv_DetLocal.adapter = DetLocalAdapter(resultado!!)
我的适配器:
class DetLocalAdapter(val det_partido: List<Any>): RecyclerView.Adapter<DetLocalAdapter.DetallesViewHolder>() {
private var context: Context? = null
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DetallesViewHolder {
val layoutInflate = LayoutInflater.from(parent.context)
.inflate(R.layout.partido_goles_row, parent, false)
context = parent.context
return DetLocalAdapter.DetallesViewHolder(layoutInflate)
}
override fun onBindViewHolder(holder: DetallesViewHolder, position: Int) {
val itemDetPart = det_partido[position]
holder.bindTiempo(itemDetPart)
holder.itemView.setOnClickListener{
val bundle = Bundle()
bundle.putString(Constants.ID_JUG, itemDetPart.idJugador)
context!!.startActivity(Intent(context, DetPlantilla::class.java).putExtras(bundle))
}
}
override fun getItemCount(): Int {
return det_partido.size
}
class DetallesViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){
fun bindTiempo(plantillaModel2: DetLocalModel){
itemView.tv_JugadorLocal.text = plantillaModel2.nombreLocal + "\n Minuto: " + plantillaModel2.minutoLocal
Picasso.get()
.load("https://ffcv.es/ncompeticiones/img/jugadores/" + plantillaModel2.idJugador + ".jpeg")
.fit()
.into(itemView.civ_jugadorLocal)
}
}
}
我的模型,其中数组为 DetPartModel1:
class DetPartModel1{
var golesLocal: ArrayList<DetLocalModel>? = null
var golesVisitante: ArrayList<DetVisiModel>? = null
}
golesLocal 所在的模型:
class DetLocalModel (
val idJugador: String,
@SerializedName("nombre")
val nombreLocal: String,
@SerializedName("minuto")
val minutoLocal: String
)
我的模型,他们是 golesVisitante:
class DetVisiModel (
val idJugador: String,
@SerializedName("nombre")
val nombreVisi: String,
@SerializedName("minuto")
val minutoVisi: String
)
你们的模型是一样的类,所以你可以使用sealed
或者只是继承来区分它们。
sealed class ModelParent(
val idJugador: String,
@SerializedName("nombre")
val nombreLocal: String,
@SerializedName("minuto")
val minutoLocal: String
)
class DetLocalModel(id : String, number: String, minute: String)
: ModelParent(id,number,minute)
class DetVisiModel(id : String, number: String, minute: String)
: ModelParent(id,number,minute)
class DetPartModel1{
var golesLocal: List<ModelParent> = mutableListOf<DetLocalModel>()
var golesVisitante: List<ModelParent> = mutableListOf<DetVisiModel>()
}
这是将它们添加到适配器的方法
创建您的模型:
val model:DetPartModel1 = DetPartModel1(); //todo fill correct data
在您的模型中正确填充数据
将完整列表添加到您的适配器
Rv_DetLocal.adapter = DetLocalAdapter(mutableListOf<ModelParent>().apply {
addAll(model.golesLocal)
addAll(model.golesVisitante)
})
这是您的适配器的外观。
class DetLocalAdapter(val items: List<ModelParent>): RecyclerView.Adapter<RecyclerView.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
//todo
}
override fun getItemCount(): Int {
items.size
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val item = items.get(position)
when(item) {
is DetVisiModel ->holder.bindDetVisiModel()
is DetLocalModel ->holder.bindDetLocalModel()
}
}
}
这是快速解决方案,
更好的方法是有 2 ViewHolder
, 2 list
s ,并通过 viewType
区分它们
如何在同一个回收视图中显示两个 arrayList。 使用 resultado 变量进行调试是正确的。 如何让结果变量显示在 RecyclerView 中?
在我的 activity DetPartido:
val resultado = (response.body()!!.golesLocal)!! + (response.body()!!.golesVisitante)!!
Rv_DetLocal.adapter = DetLocalAdapter(resultado!!)
我的适配器:
class DetLocalAdapter(val det_partido: List<Any>): RecyclerView.Adapter<DetLocalAdapter.DetallesViewHolder>() {
private var context: Context? = null
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DetallesViewHolder {
val layoutInflate = LayoutInflater.from(parent.context)
.inflate(R.layout.partido_goles_row, parent, false)
context = parent.context
return DetLocalAdapter.DetallesViewHolder(layoutInflate)
}
override fun onBindViewHolder(holder: DetallesViewHolder, position: Int) {
val itemDetPart = det_partido[position]
holder.bindTiempo(itemDetPart)
holder.itemView.setOnClickListener{
val bundle = Bundle()
bundle.putString(Constants.ID_JUG, itemDetPart.idJugador)
context!!.startActivity(Intent(context, DetPlantilla::class.java).putExtras(bundle))
}
}
override fun getItemCount(): Int {
return det_partido.size
}
class DetallesViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){
fun bindTiempo(plantillaModel2: DetLocalModel){
itemView.tv_JugadorLocal.text = plantillaModel2.nombreLocal + "\n Minuto: " + plantillaModel2.minutoLocal
Picasso.get()
.load("https://ffcv.es/ncompeticiones/img/jugadores/" + plantillaModel2.idJugador + ".jpeg")
.fit()
.into(itemView.civ_jugadorLocal)
}
}
}
我的模型,其中数组为 DetPartModel1:
class DetPartModel1{
var golesLocal: ArrayList<DetLocalModel>? = null
var golesVisitante: ArrayList<DetVisiModel>? = null
}
golesLocal 所在的模型:
class DetLocalModel (
val idJugador: String,
@SerializedName("nombre")
val nombreLocal: String,
@SerializedName("minuto")
val minutoLocal: String
)
我的模型,他们是 golesVisitante:
class DetVisiModel (
val idJugador: String,
@SerializedName("nombre")
val nombreVisi: String,
@SerializedName("minuto")
val minutoVisi: String
)
你们的模型是一样的类,所以你可以使用sealed
或者只是继承来区分它们。
sealed class ModelParent(
val idJugador: String,
@SerializedName("nombre")
val nombreLocal: String,
@SerializedName("minuto")
val minutoLocal: String
)
class DetLocalModel(id : String, number: String, minute: String)
: ModelParent(id,number,minute)
class DetVisiModel(id : String, number: String, minute: String)
: ModelParent(id,number,minute)
class DetPartModel1{
var golesLocal: List<ModelParent> = mutableListOf<DetLocalModel>()
var golesVisitante: List<ModelParent> = mutableListOf<DetVisiModel>()
}
这是将它们添加到适配器的方法
创建您的模型:
val model:DetPartModel1 = DetPartModel1(); //todo fill correct data
在您的模型中正确填充数据
将完整列表添加到您的适配器
Rv_DetLocal.adapter = DetLocalAdapter(mutableListOf<ModelParent>().apply {
addAll(model.golesLocal)
addAll(model.golesVisitante)
})
这是您的适配器的外观。
class DetLocalAdapter(val items: List<ModelParent>): RecyclerView.Adapter<RecyclerView.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
//todo
}
override fun getItemCount(): Int {
items.size
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val item = items.get(position)
when(item) {
is DetVisiModel ->holder.bindDetVisiModel()
is DetLocalModel ->holder.bindDetLocalModel()
}
}
}
这是快速解决方案,
更好的方法是有 2 ViewHolder
, 2 list
s ,并通过 viewType