Я новичок в Котлине, и я делаю приложение, которое меняет валюту.А в адаптере я хочу передать некоторые элементы в новое действие.
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, и я не смог запустить новое действие там, поэтомуЯ посмотрел в Интернете, и было решение начать новую активность внутри класса ViewHolder.Но теперь я не знаю, как передать элемент, который был добавлен в новое действие.
Ниже приведен класс данных
data class CountriesData(val name :String,val id :String)