【发布时间】:2021-04-03 23:41:17
【问题描述】:
我创建了一个类似下面的结构。当我单击第一个活动中的列表时,我想要第二个活动中有关该项目的信息。但是,我无法使用 putextra 发送数据。如果你有兴趣,我会很高兴。我不完全了解这个主题。因此,如果有人有兴趣,我会分配必要的代码。
客户.kt
val listView=findViewById<ListView>(R.id.listView)
val list=ArrayList<CustomerModel>()
listView.setOnItemClickListener { adapterView, view, i, l ->
val intent=Intent(applicationContext,CustomersDetails::class.java)
//I think that's not true intent.putExtra("Name",list[i])
startActivity(intent)
}
CustomersDetails.kt
val intent=intent
choosenCustomer= intent.getStringExtra("Name").toString()
CustomerModel.kt
class CustomerModel(val title:String, val description:String,val img:Int): Parcelable {
constructor(parcel: Parcel) : this(
parcel.readString()!!,
parcel.readString()!!,
parcel.readInt()
) {
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(title)
parcel.writeString(description)
parcel.writeInt(img)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<CustomerModel> {
override fun createFromParcel(parcel: Parcel): CustomerModel {
return CustomerModel(parcel)
}
override fun newArray(size: Int): Array<CustomerModel?> {
return arrayOfNulls(size)
}
}
}
CustomerAdapter.kt
class CustomerAdapter(var mCtx:Context,val resources: Int,var items:List<CustomerModel>):
ArrayAdapter<CustomerModel>(mCtx,resources,items) {
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val layoutInflater: LayoutInflater= LayoutInflater.from(mCtx)
val view:View=layoutInflater.inflate(resources,null)
val imageView: ImageView=view.findViewById(R.id.image)
val titleTextView: TextView=view.findViewById(R.id.cuText)
val descriptionTextView:TextView=view.findViewById(R.id.ofText)
var mItem:CustomerModel=items[position]
imageView.setImageDrawable(mCtx.resources.getDrawable(mItem.img))
titleTextView.text=mItem.title
descriptionTextView.text=mItem.description
return view
}
}
【问题讨论】:
-
在
CustomerDetails中chosenCustomer的类型是什么?你为什么在getStringExtra()的结果上调用toString()?您是否添加了日志记录或使用调试器查看调用getStringExtra()时得到的结果?
标签: android listview kotlin android-intent onitemclicklistener