Я хочу передать некоторую информацию о выбранном элементе для просмотра в новом действии AboutApp.kt, но здесь я проверяю только одну информацию (имя). У меня нет проблем с RecyclerView, он работает. Я видел много способов сделать объект ArrayList, который можно разложить на части, но чувствовал путаницу в том, где должна быть реализована активность, поэтому он получает ошибку в MainActivity и AboutApp (намерение назначения).
Код изделия MainActivity.kt Получение ошибки в showSelectedHerbal, когда я использую position для установкиExtra
class MainActivity : AppCompatActivity() {
private lateinit var rvHerbal: RecyclerView
private var list: ArrayList<Herbal> = arrayListOf()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
rvHerbal = findViewById(R.id.rv_herbal)
rvHerbal.setHasFixedSize(true)
list.addAll(HerbalData.listData)
showRecyclerList()
}
private fun showRecyclerList() {
rvHerbal.layoutManager = LinearLayoutManager(this)
val listHerbalAdapter = ListHerbalAdapter(list)
rvHerbal.adapter = listHerbalAdapter
listHerbalAdapter.setOnItemClickCallback(object : ListHerbalAdapter.OnItemClickCallback {
override fun onItemClicked(data: Herbal) {
showSelectedHerbal(data)
}
})
}
........
private fun showSelectedHerbal(data: Herbal) {
val moveIntent = Intent(this, AboutApp::class.java)
moveIntent.putExtra("Example_Item", list!![position])
this.startActivity(moveIntent)
}
.......
}
Код изделия из AboutApp.kt , который получает ошибку в herbalName (). Я знаю, что я не реализовал parcelable, так что это неправильно
val intent = intent
val herbalData: HerbalData = intent.getParcelableExtra("Example_Item")
val title: String = herbalData.herbalName()
val itemName = findViewById<TextView>(R.id.item_name)
itemName.text = title
Мне очень жаль, я прилагаю вам некоторые действия, которые я путаю, может быть, одно из них - правильное место для реализации parcelable , Вот мой класс данных Herbal.kt
data class Herbal(
var name: String = "",
var detail: String = "",
var photo: Int = 0
)
Код объекта HerbalData.kt
object HerbalData {
private val herbalName = arrayOf("Cengkeh",
"Ginseng",
"Jahe")
..........
val listData: ArrayList<Herbal>
get() {
val list = arrayListOf<Herbal>()
for (position in herbalName.indices) {
val herbal = Herbal()
herbal.name = herbalName[position]
herbal.detail = herbalDetail[position]
herbal.photo = herbalImage[position]
list.add(herbal)
}
return list
}
}
Помогите мне, пожалуйста где активность должна быть написана: пакет ArrayList и как это исправить. Заранее благодарю за любую помощь.