jeudi 19 décembre 2019

How to make delete button to delete recyclerview items in kotlin?

I made selectDelete button on the main activity instead of recyclerview. When I click the delete button, I want to delete the recycler view item whose checkbox is checked. There is an error that checks the recycler view item checkbox and unchecks the item when scrolling. How can I solve this problem? Lets check my activity, data class, recyclerview adapter.

class CartViewActivity : AppCompatActivity(), SwipeRefreshLayout.OnRefreshListener {

    private val tag = this::class.java.simpleName

    lateinit var adapter: CartItemRecyclerAdapter

    var itemList: MutableList<CartItemDataVo> = arrayListOf()

  override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_cart_view)

   selectDelete.setOnClickListener {

            if(checkBox.isChecked){


            }
        }

        swipeRefreshLo.setOnRefreshListener(this)

        itemList.add(CartItemDataVo("item1", 1, 16800, "cart_doll",false))
        itemList.add(CartItemDataVo("item2", 1, 16800, "cart_cup",false))
        itemList.add(CartItemDataVo("item3", 1, 30000, "cart_perfume",false))
        itemList.add(CartItemDataVo("item4", 1, 16800, "cart_fan",false))

        adapter = CartItemRecyclerAdapter(this, this , itemList)
        recycler_view.adapter = adapter
        recycler_view.layoutManager = androidx.recyclerview.widget.LinearLayoutManager(applicationContext)

    }

    override fun onRefresh() {
        swipeRefreshLo.isRefreshing = false
    }
}
class CartItemDataVo(title: String, itemNumber: Int, pointValue: Int, imageView: String, CheckBox:Boolean) {
    var title: String = title
    var itemNumber: Int = itemNumber
    var pointValue: Int = pointValue
    var image: String = imageView
    var isChecked:Boolean = CheckBox

}


class CartItemRecyclerAdapter(val context: Context, private var activity : Activity, private var dataList : MutableList<CartItemDataVo>) : RecyclerView.Adapter<CartItemRecyclerAdapter.Holder>() {


    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
        val view = LayoutInflater.from(context).inflate(R.layout.cart_item_list, parent, false)
        return Holder(view)
    }


    override fun onBindViewHolder(holder: Holder, position: Int) {
        holder?.bind(dataList[position], context)

    }


    override fun getItemCount(): Int = dataList.size

    fun toggleItems() {
        for (item: CartItemDataVo in dataList) {
            var state = item.isChecked
            item.isChecked = state.not()
        }
        notifyDataSetChanged()
    }

    inner class Holder(itemView: View?) : RecyclerView.ViewHolder(itemView!!) {

        var titleText = itemView?.findViewById(R.id.titleText) as TextView
        var temNumerTextt = itemView?.findViewById(R.id.textViewItemNumer) as TextView
        var pointValueText = itemView?.findViewById(R.id.pointValueText) as TextView
        var imageView = itemView?.findViewById(R.id.imageView) as ImageView
        var checkBox = itemView?.findViewById(R.id.checkBox) as CheckBox

        fun bind(data: CartItemDataVo, context: Context) {
            if (data.image != "") {
                val resourceId =
                    context.resources.getIdentifier(data.image, "drawable", context.packageName)
                imageView?.setImageResource(resourceId)
            } else {
                imageView.setImageResource(R.mipmap.ic_launcher)
            }
            titleText?.text = data.title
            temNumerTextt?.text = data.itemNumber.toString()
            pointValueText?.text = data.pointValue.toString() + "P"

            if (data.isChecked) {
                checkBox.buttonDrawable =
                    checkBox.context.getDrawable(R.drawable.check_box_active_cs)
                val layout = activity?.findViewById(R.id.layoutOrder) as LinearLayout
                layout.visibility = View.VISIBLE
            } else {
                checkBox.buttonDrawable = checkBox.context.getDrawable(R.drawable.check_box_no)
                val layout = activity?.findViewById(R.id.layoutOrder) as LinearLayout
                layout.visibility = View.GONE
            }


            checkBox?.setOnClickListener {
                if (checkBox.isChecked == data.isChecked) {
                    checkBox.buttonDrawable = it.context.getDrawable(R.drawable.check_box_active_cs)
                    val layout = activity?.findViewById(R.id.layoutOrder) as LinearLayout
                    layout.visibility = View.VISIBLE
                } else {
                    checkBox.buttonDrawable = it.context.getDrawable(R.drawable.check_box_no)
                    val layout = activity?.findViewById(R.id.layoutOrder) as LinearLayout
                    layout.visibility = View.GONE
                }


            }
        }
    }
}
```



Aucun commentaire:

Enregistrer un commentaire