【发布时间】:2021-04-20 20:06:19
【问题描述】:
我需要帮助,我需要当您单击 RecyclerView 的每个单元格并在单击该活动后使用 onclick 切换到新活动时,会出现对象的名称和详细信息,如果有想法的话可以在没有数据库的情况下在 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)
}
}
}
【问题讨论】:
标签: android-studio kotlin android-recyclerview onclicklistener