Я пытаюсь сделать всплывающее окно, где пользователь может увидеть Recyclerview (Список комментариев).Но я хочу добавить в него 2 кнопки для повышения и понижения для комментариев.
Я завершил просмотр Recyclerview и его отображение правильно, как я хочу, но я не могу добавить кнопки в recyclerview.Вот мой код.
Код всплывающего окна из моей активности:
lateinit var getAllcomment : GetAllCommentsAdapter
lateinit var upVote : View.OnClickListener
lateinit var downVote : View.OnClickListener
viewallcomments_txt.setOnClickListener {it->
val layoutInflater = this@ViewSinglePostActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
val customView = layoutInflater.inflate(R.layout.popup, null)
val display = windowManager.defaultDisplay
val size = Point()
display.getSize(size)
val popupWindow=PopupWindow(customView, size.x-50, size.y-660, true);
popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
popupWindow.setAnimationStyle(R.style.PopupAnimation)
popupWindow.showAtLocation(linearLayout1, Gravity.CENTER, 0, 0)
popupWindow.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
customView.popup_rcv.layoutManager = LinearLayoutManager(this)
getAllcomment = GetAllCommentsAdapter(ArrayList(), upVote, downVote) // I have declare Adapter all parameter
getMainApp().swiftAPI.getAllComments(post_id).enqueue(object : Callback<ArrayList<Comments>>{
override fun onFailure(call: Call<ArrayList<Comments>>, t: Throwable) {
Toast.makeText(this@ViewSinglePostActivity, t?.message, Toast.LENGTH_SHORT)
}
override fun onResponse(call: Call<ArrayList<Comments>>, response: Response<ArrayList<Comments>>) {
if (response?.isSuccessful!!){
getAllcomment.commentList.addAll(response.body()!!)
customView.popup_rcv.adapter = getAllcomment
getAllcomment.notifyDataSetChanged()
}
}
})
Адаптер GetAllcomments:
class GetAllCommentsAdapter (var commentList: ArrayList<Comments>, val upVote: View.OnClickListener, val downVote: View.OnClickListener) : RecyclerView.Adapter<GetAllCommentsAdapter.ViewHolder>() {
var comment_id = 0
var commentHashMap = HashMap<Int, Int>()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val itemView = LayoutInflater.from(parent.context).inflate(R.layout.popup_rcv, parent, false)
return ViewHolder(itemView)
}
override fun getItemCount(): Int {
return commentList.count()
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.comment?.setText(commentList.get(position).comment)
holder.username?.setText(commentList.get(position).username)
}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
var username : TextView ?= null
var comment : TextView ?= null
var upvote : ImageView ?= null
var downvote : ImageView ?= null
init {
this.username = itemView.findViewById(R.id.dialog_cmt_user_txt)
this.comment = itemView.findViewById(R.id.dialog_cmt_txt)
this.upvote = itemView.findViewById(R.id.upvote_comment_img)
this.downvote = itemView.findViewById(R.id.downvote_comment_img)
}
}
Но я получаю эту ошибку при открытии всплывающего окна.
свойство lateinit upVote не было инициализировано
Заранее спасибо