第二个 activity 与 OnClickListener 中的详细信息
Details in the Second activity with OnClickListener
我需要帮助,我需要当你点击 RecyclerView 的每个单元格并切换到新的 activity 时使用 onclick onclick on this activity,对象的名称和详细信息信息正在出现,如果有想法如何在没有数据库的情况下在 Kotlin 上完成(我设法使用 intent.putExtra 传输名称)
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
我需要帮助,我需要当你点击 RecyclerView 的每个单元格并切换到新的 activity 时使用 onclick onclick on this activity,对象的名称和详细信息信息正在出现,如果有想法如何在没有数据库的情况下在 Kotlin 上完成(我设法使用 intent.putExtra 传输名称)
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