第二个 activity 与 OnClickListener 中的详细信息

Details in the Second activity with OnClickListener

我需要帮助,我需要当你点击 RecyclerView 的每个单元格并切换到新的 activity 时使用 onclick onclick on this activity,对象的名称和详细信息信息正在出现,如果有想法如何在没有数据库的情况下在 Kotlin 上完成(我设法使用 intent.putExtra 传输名称)

Photo code

    import android.content.Intent
    import androidx.appcompat.app.AppCompatActivity
    import android.os.Bundle
    import android.widget.Toast
    import androidx.recyclerview.widget.GridLayoutManager
    import androidx.recyclerview.widget.LinearLayoutManager
    import androidx.recyclerview.widget.RecyclerView
    import kotlinx.android.synthetic.main.activity_main.*
    class MainActivity : AppCompatActivity(),onClick {
    private var recyclerView: RecyclerView? = null
    private var item: ArrayList<Item>? = null
    private var gridLayoutManager: GridLayoutManager? = null
    private var adapter: Adapter? = null
    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    recyclerView = findViewById(R.id.item_list)
    //количество grid элементов в строчке
    gridLayoutManager =
            GridLayoutManager(applicationContext, 2, 
    LinearLayoutManager.VERTICAL, false)
    recyclerView?.layoutManager = gridLayoutManager
    recyclerView?.setHasFixedSize(true)

    item = ArrayList()
    item = setItem()
    //установка адаптера
    adapter = Adapter(item!!,this)
    recyclerView?.adapter = adapter
    item_list.adapter=adapter
    }
private fun setItem(): ArrayList<Item> {
    //добавление элементов в RecyclerView
    var arrayList: ArrayList<Item> = ArrayList()
    arrayList.add(Item(R.drawable.koscmos, "A Latter"))
    arrayList.add(Item(R.drawable.teatr, "B Latter"))
    arrayList.add(Item(R.drawable.bridge, "C Latter"))
    return arrayList
}

override fun onItemClick(position: Int) {
    Toast.makeText(this,"id" +position,Toast.LENGTH_LONG).show()
    //переход на новую активность с переносом названия в эту активность
    val intent= Intent(this,secondAct::class.java)
    intent.putExtra("name", item?.get(position)?.name)
    startActivity(intent)
     }
    }

适配器:

class Adapter(var arrayList: ArrayList<Item>, private val onClick: onClick) :
RecyclerView.Adapter<Holder>() {

//Установка холдера
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
    val viewHolder = LayoutInflater.from(parent.context)
        .inflate(R.layout.item_list, parent, false)
    return Holder(viewHolder)
}

override fun getItemCount(): Int {
    return arrayList.size
}

 override fun onBindViewHolder(holder: Holder, position: Int) {
 //установка элементов для onClick
    val item: Item = arrayList[position]
    holder.icons.setImageResource(item.icons!!)
    holder.titles.text = item.name
    holder.icons.setOnClickListener {
        onClick.onItemClick(position)
    }
    holder.titles.setOnClickListener {
        onClick.onItemClick(position)
    }

}

}

class Item : Serializable {}

现在您可以通过 Intent 传递对象:

override fun onItemClick(position: Int) {
    val intent= Intent(this,secondAct::class.java)
    intent.putExtra("item", item?.get(position))
    startActivity(intent)
}

然后在第二幕

val item = intent.extras.get("item") as Item