我有recyclerview,有一个按钮。
此按钮可以将布尔状态从true更改为false,从false更改为true。
我想根据按钮的布尔状态更改其背景颜色。
下面是我的代码
class ProjectFeedBigAdapter : ListAdapter<Project, ProjectFeedBigAdapter.ProjectFeedBigViewHolder>(
ProjectFeedDiffUtil()
) {
val db: FirebaseFirestore = FirebaseFirestore.getInstance()
val projects: ArrayList<Project> = arrayListOf()
init {
db.collection("projects")
.orderBy("timeStamp", Query.Direction.DESCENDING)
.addSnapshotListener { querySnapshot, exception ->
projects.clear()
if(querySnapshot == null) return@addSnapshotListener
for(snapshot in querySnapshot.documents) {
val project = snapshot.toObject(Project::class.java)
projects.add(project!!)
}
submitList(projects)
}
}
override fun onCreateViewHolder...{...}
override fun onBindViewHolder(holder: ProjectFeedBigViewHolder, position: Int) {
val item = getItem(position)
holder.apply {
when(item.booleanState) {
true -> {
// Button BackgroundColor Change
}
else -> {
// Button BackgroundColor Change
}
}
stateButton.setOnClickListener {
val project = db.collection("projects").document(item.projectId)
item.booleanState?.let {
project
.update("booleanState", !it)
.addOnSuccessListener { Toast.makeText(//context, "Success", Toast.LENGTH_SHORT).show() }
.addOnFailureListener { e -> }
}
}
}
}
inner class ProjectFeedBigViewHolder(private val view: View): RecyclerView.ViewHolder(view) {
...
}
}
class ProjectFeedDiffUtil: DiffUtil.ItemCallback<Project>() {
override fun areItemsTheSame(oldItem: Project, newItem: Project): Boolean {
return oldItem.timeStamp == newItem.timeStamp
}
override fun areContentsTheSame(oldItem: Project, newItem: Project): Boolean {
return oldItem == newItem
}
}
当我单击“ stateButton”时,
我该如何解决这个问题?