【问题标题】:How to make Recyclerview items clickable?如何使 Recyclerview 项目可点击?
【发布时间】:2020-07-13 14:52:09
【问题描述】:

我正在尝试制作一个笔记应用程序,它允许用户制作简单的笔记并保存它。我使用领域数据库来保存用户笔记。注释在回收站视图中显示良好,但我无法单击它们。

我想要发生的是,当点击回收视图中的一个笔记时,我想开始一个新的活动。

适配器

class NotesAdapter(private val context:Context, private val notesList: RealmResults<Notes>):RecyclerView.Adapter<RecyclerView.ViewHolder>(){

   private lateinit var mOnClickListener:View.OnClickListener
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
        val v = LayoutInflater.from(parent.context).inflate(R.layout.notes_rv_layout,parent,false)
        v.setOnClickListener(mOnClickListener)
        return ViewHolder(v)
    }

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

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
        holder.itemView.titleTV.text = notesList[position]!!.title
        holder.itemView.descTV.text = notesList[position]!!.description
        holder.itemView.idTV.text = notesList[position]!!.id.toString()

    }
    private fun onClick(view:View) {
        
    }

    class ViewHolder(v: View?):RecyclerView.ViewHolder(v!!){
        val title = itemView.findViewById<TextView>(R.id.titleTV)
        val desc = itemView.findViewById<TextView>(R.id.descTV)
        val id = itemView.findViewById<TextView>(R.id.idTV)

    }
}

主要活动

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //init views
        realm  = Realm.getDefaultInstance()
        addNotes = findViewById(R.id.addNotes)
        notesRV = findViewById(R.id.NotesRV)

        //onclick add notes button

        addNotes.setOnClickListener {
            val intent = Intent(this, AddNotesActivity::class.java)
            startActivity(intent)
            finish()
        }

        notesRV.layoutManager = StaggeredGridLayoutManager(2,LinearLayoutManager.VERTICAL)
        getAllNotes()
    }

    private fun getAllNotes() {

        notesList = ArrayList()
        val results:RealmResults<Notes> = realm.where<Notes>(Notes::class.java).findAll()
        notesRV.adapter = NotesAdapter(this, results)
        notesRV.adapter!!.notifyDataSetChanged()
    }
}

【问题讨论】:

    标签: java android-studio kotlin android-recyclerview realm


    【解决方案1】:

    为此使用 onBindViewHolder:

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
    
        holder.itemView.titleTV.text = notesList[position]!!.title
        holder.itemView.descTV.text = notesList[position]!!.description
        holder.itemView.idTV.text = notesList[position]!!.id.toString()
    
        holder.itemView.setOnClickListener{
           val intent = Intent(holder.itemView.context,YourActivity::class.java)
           holder.itemView.context.startActivity(intent)
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      相关资源
      最近更新 更多