【发布时间】:2019-01-16 14:04:27
【问题描述】:
我是 Kotlin 的新手,我正在制作一个可以兑换货币的应用。在适配器中,我想将一些项目传递给一个新的活动。
class AdapterC (val countryList: ArrayList<CountriesData>): RecyclerView.Adapter<AdapterC.ViewHolder>() {
override fun onCreateViewHolder(view: ViewGroup, position: Int): ViewHolder {
val v = LayoutInflater.from(view?.context).inflate(R.layout.country_list,view,false)
return ViewHolder(v)
}
override fun getItemCount(): Int {
return countryList.size
}
override fun onBindViewHolder(view: ViewHolder, position: Int) {
val country : CountriesData=countryList.toTypedArray()[position]
view?.textViewName.text=country.name
/*
Old code in which i can accese to items
view.itemView.setOnClickListener{
var name = country.name
var id = country.id
}
*/
}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView){
val textViewName= itemView.findViewById(R.id.TextViewCountry) as TextView
//New code that i found on the internet
init {
itemView.setOnClickListener{
val intent = Intent(itemView.context, CurrencyActivity::class.java)
itemView.context.startActivity(intent)
}
}
}
}
据我所知,将 setOnClickListener 放入 onBindViewHolder 是一种不好的做法,而且我无法在其中启动新活动,因此我在 Internet 上查看了在 ViewHolder 类中启动新活动的解决方案。但是现在我不知道如何传递一个被点击进入新活动的项目。
下面是数据类
data class CountriesData(val name :String,val id :String)
【问题讨论】:
标签: android kotlin android-adapter kotlin-android-extensions