My Category data class:
data class Category(val category: String)
This is my category Adapter:
package com.example.store
import android.graphics.Color
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import androidx.recyclerview.widget.RecyclerView
import com.example.store.model.Category
import com.example.store.model.CategoryObjects
import com.example.store.model.CategoryObjects.isClickedItem
import com.example.store.model.CategoryObjects.size
class CategoryAdapter(val categories:MutableList<Category>):RecyclerView.Adapter<CategoryAdapter.ViewHolder>() {
class ViewHolder(view: View) : RecyclerView.ViewHolder(view){
val categoryButton: Button = view.findViewById(R.id.login_btn)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_category, parent, false)
return ViewHolder(view)
}
override fun getItemCount(): Int {
return categories.size
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val category = categories[position]
holder.categoryButton.text = category.category
holder.categoryButton.setOnClickListener {
holder.categoryButton.setBackgroundColor(Color.GREEN)
}
}
}
PrimaryActivity:
package com.example.store
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.example.store.model.Category
import com.example.store.model.CategoryObjects
import com.example.store.remote.RetrofitHelper
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
class PrimaryActivity : AppCompatActivity() {
lateinit var categoryRecyclerView : RecyclerView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_primary)
val categories = mutableListOf<Category>()
GlobalScope.launch {
try {
val response = RetrofitHelper.storeApi.getCategories()
response.add(0,"all")
CategoryObjects.size = response.size
for(i in 0 until response.size){
categories.add(Category(category = response[i]))
}
withContext(Dispatchers.Main){
categoryRecyclerView = findViewById(R.id.category_recyclerview)
categoryRecyclerView.layoutManager = LinearLayoutManager(this@PrimaryActivity,RecyclerView.HORIZONTAL,false)
val categoryAdapter = CategoryAdapter(categories=categories)
categoryRecyclerView.adapter = categoryAdapter
}
} catch (e:Exception) {
Log.e("RETROFIT", e.message.toString())
}
}
}
}
Only one item should be selected (green background)
It means for example first I select "all", after that when I select "electronics" , "all" should be deselected ("all" should have black background once again)
How can I do that? (with holder, I access only the selected item! I cannot access other items)
Your help will be appreciated
