I am using logic for Like and Dislike Button
where I have declared variable
var user_like_dislike_state == 0
When I click on Like button value change to one if I pressed again it will change back to 0
if(user_like_dislike_state == 0 || user_like_dislike_state == 1){
user_like_dislike_state = -1
} else {
user_like_dislike_state = 0
}
Its working when I try to use on Single post but when I try to use this logic in Recyclerview
If I liked post 1 then I try to like post 4 then it automatically change value to 0
In which 3 States I have given
user_like_dislike_state == 1 : **Like**
user_like_dislike_state == 0 : **Non**
user_like_dislike_state == -1 : **Dislike**
Adapter.kt:
class ViewsinglepostAdapter(var commentsList: ArrayList<Comment>, val upVote : View.OnClickListener, val downVote: View.OnClickListener): RecyclerView.Adapter<ViewsinglepostAdapter.ViewHolder>(){
var user_like_dislike_state = 0
var comment_id = 0
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.user_name?.setText(commentsList.get(position).User)
holder.comment?.setText(commentsList.get(position).comment)
holder.upvote?.setOnClickListener({
if(user_like_dislike_state == 0 || user_like_dislike_state == -1){
user_like_dislike_state = 1
} else {
user_like_dislike_state = 0
}
comment_id = commentsList.get(position).Id
upVote.onClick(it)
})
holder.downvote?.setOnClickListener({it->
if(user_like_dislike_state == 0 || user_like_dislike_state == 1){
user_like_dislike_state = -1
} else {
user_like_dislike_state = 0
}
comment_id = commentsList.get(position).Id
downVote.onClick(it)
user_like_dislike_state == 0
})
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder{
val itemView = LayoutInflater.from(parent.context).inflate(R.layout.singlecomment,parent,false)
return ViewHolder(itemView)
}
override fun getItemCount(): Int {
return commentsList.count()
}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView){
var upvote: ImageView? = null
var downvote: ImageView? = null
var user_name: TextView? = null
var comment: TextView? = null
init {
this.upvote = itemView.findViewById(R.id.upvote_post_img)
this.downvote = itemView.findViewById(R.id.down_vote_post_img)
this.user_name = itemView.findViewById(R.id.user_name)
this.comment = itemView.findViewById(R.id.comment)
}
}
}