Oi pessoal... Como eu implemento uma lógica para que meu app mostre checkboxes marcados/desmarcados, conforme o usuário selecionar opções? Eu tenho a seguinte lógica que salva no banco de dados, mas eu não consigo excluir, apenas acrescentar a cada clique. E também não consegui aprensentar na tela os checkboxes checados depois que o usuário feche o app. Agradeço a quem puder me ajudar a escrever e entender a realização.
Código em que insiro os elementos no data base e :
class Ingles : AppCompatActivity() {
private lateinit var rvIngles: RecyclerView
private lateinit var checked: CheckBox
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main_ingles)
rvIngles = findViewById(R.id.rv_ingles)
val mainItemsIngles = mutableListOf<MainItems>()
mainItemsIngles.add(
MainItems(
id = 1,
textstringId = R.string.ingles_1,
)
)
mainItemsIngles.add(
MainItems(
id = 2,
textstringId = R.string.ingles_2,
)
)
val adapter = MainAdapter(mainItemsIngles)
rvIngles.layoutManager = LinearLayoutManager(this)
rvIngles.adapter = adapter
}
private inner class MainAdapter(
private val mainItemsIngles: MutableList<MainItems>,
) :
RecyclerView.Adapter<MainAdapter.MainViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MainViewHolder {
val itemCurrentIngles = layoutInflater.inflate(R.layout.item_main_ingles, parent, false)
return MainViewHolder(itemCurrentIngles)
}
override fun onBindViewHolder(holder: MainViewHolder, position: Int) {
val itemCurrentIngles = mainItemsIngles[position]
holder.bind(itemCurrentIngles)
}
override fun getItemCount(): Int {
return mainItemsIngles.size
}
private inner class MainViewHolder(itemViewIngles: View) :
RecyclerView.ViewHolder(itemViewIngles) {
fun bind(itemCurrentIngles: MainItems) {
val checkbox: CheckBox = itemView.findViewById(R.id.item_checkBox_ingles)
checkbox.isChecked = itemCurrentIngles.checkBoxId
checkbox.setText(itemCurrentIngles.textstringId)
checkbox.setOnClickListener {
if (checkbox.isChecked)
Thread {
val app = application as App
val dao = app.db.calcDao()
dao.insert(
Calc(
type = "ingles",
checkBox = true,
)
)
}.start()
}
[...]