skip to Main Content

Trying to get a button to open another activity in android studio using kotlin. I am user a recycles view to do so. I have view card and want to edit the data in the card so I am user onClick to get the page to respond but that does seem to work I tried researching it but nothing come up that I can make sense of. Here is the code.

Thank you for all your help I appreciate it

This is the adapter class:

```class EventAdapter(var mListener: onItemClickListener, var context: Context, val items: ArrayList<EventModelk>):
        RecyclerView.Adapter<EventAdapter.ViewHolder>()  {



    interface onItemClickListener {
        fun onItemClick(position: Int)
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {



            val itemview = LayoutInflater.from(context).inflate(
                R.layout.eventitems,
                parent,
                false,
            )
        return ViewHolder(itemview, mListener)

    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {


        val item = items[position]

        holder.setEmail.text = item.eEmail
        holder.setNotes.text = item.nNotes
        holder.setData.text = item.dDate
        holder.setTime.text = item.tTime
        if (item.repeat == 1) {

            holder.setReap.isChecked = true
            // holder.setReap.text = item.repeat.toString()
        }

        if (position % 2 == 0) {
            holder.main.setBackgroundColor(
                ContextCompat.getColor(
                    context,
                    R.color.colorLightGray
                )
            )
        } else {
            holder.main.setBackgroundColor(ContextCompat.getColor(context, R.color.colorWhite))
        }
        holder.pushimg.setOnClickListener {

            if (context is UpdateDataInfo) {
                (context as UpdateDataInfo).updateEvent(item)
            }
        }
//       interface onItemClickListener{
//            fun onItemClick(position: Int)
    }

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

    class ViewHolder(view: View,onItemClickListener: onItemClickListener): RecyclerView.ViewHolder(view),onItemClickListener {

        val main: CardView = view.IIMain
        val setData: TextView = view.set_date
        val setTime: TextView = view.set_time
        val setEmail: TextView = view.Tv_email
        val setNotes: TextView = view.set_note
        val setReap: CheckBox =view.is_repeat
        val pushimg: ImageView = view.img_edit
        val onItemClickListener = onItemClickListener


        override fun onItemClick(position: Int) {
            onItemClickListener.onItemClick(absoluteAdapterPosition)
        }

    }
}```

This is my code for getting the click to go to another activity:

class CurrentSch : AppCompatActivity(), EventAdapter.onItemClickListener {

    //private var change =imageView2?.isClickable
    var STORAGE_LOCAL =true

    val eventlist = ArrayList<EventModelk>()

    @RequiresApi(Build.VERSION_CODES.N)
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.currentsch)


        btnNewApp2.setOnClickListener {
            val intent = Intent(this, NewPlan::class.java)
            startActivity(intent)
        }

        seeAllEventInPlan()
    }

    //private var change =imageView2?.isClickable

    private fun getEventist(): ArrayList<EventModelk>{
        val eventdatabase = EventDatabasek(this)

        return eventdatabase.veiwEvent()
    }

    fun seeAllEventInPlan() = if(getEventist().size >0){

        ryc_eventLists.visibility = View.VISIBLE
        viewnotview.visibility = View.GONE

        ryc_eventLists.layoutManager = LinearLayoutManager(this)
        val eventAdapter = EventAdapter(this,this, getEventist())
        ryc_eventLists.adapter = eventAdapter

    }else{
        ryc_eventLists.visibility = View.GONE
        viewnotview.visibility = View.VISIBLE
    }
    override fun onItemClick(position: Int) {

        val item = eventlist[position]
        img_edit.setOnClickListener {
            val intent = Intent(this, UpdateDataInfo::class.java)
            intent.putExtra("Events", position)
            startActivity(intent)
        }
    }
}

2

Answers


  1. Inside the onBindViewHolder function, simply call mListener.onItemClick(position) for example if you wanted to open another Activity on click of setData, then you can write below code in onBindViewHolder

    holder.setData.setOnClickListener { mListener.onItemClick(position) }
    
    Login or Signup to reply.
  2. according to your above code , you have made callbacks where you calling thee adapter you will get callback there and you will open a activity there .. .. but you can simple open your new activity from adapter like this ..

    holder.itemView.setOnClickListener(View.OnClickListener {
    
            val intent  = Intent (context,SomeActivity::class.java)
            context.startactivity(intent)
        })
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search