Кнопка OnClickListener внутри класса адаптера, вызывающая сбой приложения в Kotlin - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь сохранить значения из модифицированной базы данных, нажимая AddtoCartButton, но при нажатии этой кнопки происходит сбой приложения.Я могу получить результат модернизации без каких-либо проблем, но проблема с onclicklistener.

Code:
  inner class MoviesAdapter : RecyclerView.Adapter<MoviesAdapter.MovieViewHolder>() {
        private val movies: MutableList<Movie> = mutableListOf()
        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MovieViewHolder {
            return MovieViewHolder(layoutInflater.inflate(R.layout.item_movie_layout, parent, false))
        }
        override fun getItemCount(): Int {
            return movies.size
        }
        override fun onBindViewHolder(holder: MovieViewHolder, position: Int) {
            holder.bindModel(movies[position])
        }
        fun setMovies(data: List<Movie>) {
            movies.addAll(data)
            notifyDataSetChanged()
        }
        inner class MovieViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

            val movieGenreTxt : TextView = itemView.findViewById(R.id.movieGenre)
            val movieYearTxt : TextView = itemView.findViewById(R.id.movieYear)
            val movieAvatarImage : ImageView = itemView.findViewById(R.id.movieAvatar)
            val movieDescription: TextView =itemView.findViewById(R.id.movieDescription)

            fun bindModel(movie: Movie) {
            //    movieTitleTxt.text = movie.name
                movieGenreTxt.text = movie.menu
                movieYearTxt.text = movie.price
                Picasso.get().load(movie.picture).into(movieAvatarImage)
                movieDescription.text=movie.description
                var movieName:String= movie.name!!

               var testvar=movie.name.toString()
            }
        }

    }
fun addtocart(view: View)
{
    Toast.makeText(context,"Success on Click", Toast.LENGTH_SHORT).show()
   print testvar 
}
Error:
  java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference

1 Ответ

0 голосов
/ 29 октября 2018
Below code solves the purpose.
  Code:
      inner class MoviesAdapter : RecyclerView.Adapter<MoviesAdapter.MovieViewHolder>() {
            private val movies: MutableList<Movie> = mutableListOf()
            override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MovieViewHolder {
                return MovieViewHolder(layoutInflater.inflate(R.layout.item_movie_layout, parent, false))
            }
            override fun getItemCount(): Int {
                return movies.size
            }
            override fun onBindViewHolder(holder: MovieViewHolder, position: Int) {
                holder.bindModel(movies[position])
            }
            fun setMovies(data: List<Movie>) {
                movies.addAll(data)
                notifyDataSetChanged()
            }
            inner class MovieViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

                val movieGenreTxt : TextView = itemView.findViewById(R.id.movieGenre)
                val movieYearTxt : TextView = itemView.findViewById(R.id.movieYear)
                val movieAvatarImage : ImageView = itemView.findViewById(R.id.movieAvatar)
                val movieDescription: TextView =itemView.findViewById(R.id.movieDescription)

                fun bindModel(movie: Movie) {
                //    movieTitleTxt.text = movie.name
                    movieGenreTxt.text = movie.menu
                    movieYearTxt.text = movie.price
                    Picasso.get().load(movie.picture).into(movieAvatarImage)
                    movieDescription.text=movie.description
                    var movieName:String= movie.name!!

                   var testvar=movie.name.toString()
                    val addtocart = itemView.findViewById<Button>(R.id.idCart)
                    addtocart!!.setOnClickListener {
                    print $testvar
                        Toast.makeText(context,"Success on Click", Toast.LENGTH_SHORT).show()
                        startActivity(intent) }

                }
            }

        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...