【问题标题】:Details in the Second activity with OnClickListener使用 OnClickListener 的第二个活动中的详细信息
【发布时间】:2021-04-20 20:06:19
【问题描述】:

我需要帮助,我需要当您单击 RecyclerView 的每个单元格并在单击该活动后使用 onclick 切换到新活动时,会出现对象的名称和详细信息,如果有想法的话可以在没有数据库的情况下在 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)
    }

}

}

【问题讨论】:

    标签: android-studio kotlin android-recyclerview onclicklistener


    【解决方案1】:
    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-21
      • 2014-10-15
      • 2013-08-09
      • 1970-01-01
      • 1970-01-01
      • 2020-05-05
      • 1970-01-01
      • 2020-07-12
      相关资源
      最近更新 更多