[kotlin] 리사이클러뷰에서 아이템에 계산기(calculator) 추가하기

안녕하세요! 오늘은 Kotlin을 사용하여 안드로이드 앱의 리사이클러뷰(RecyclerView)에서 아이템에 계산기를 추가하는 방법에 대해 알아보겠습니다.

계산기 추가하기

먼저, 리사이클러뷰의 아이템 레이아웃 파일에 EditText를 추가하여 사용자가 값을 입력할 수 있도록 만들겠습니다. 이제 각 아이템에 대한 데이터 클래스를 만들고, 해당 데이터 클래스를 이용해 리사이클러뷰 어댑터를 설정합니다.

data class Item(val name: String, var quantity: Int)

어댑터(Adapter)와 ViewHolder

다음으로, 어댑터 클래스 내에서 각 아이템 뷰의 ViewHolder를 만들어 줍니다. ViewHolder 내부에는 각 입력 필드에 대한 참조를 가지고 있어야 합니다.

class ItemAdapter(private val itemList: List<Item>) : RecyclerView.Adapter<ItemAdapter.ItemViewHolder>() {

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

    override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
        val currentItem = itemList[position]
        holder.bind(currentItem)
    }

    inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        private val itemName: TextView = itemView.findViewById(R.id.item_name)
        private val itemQuantity: EditText = itemView.findViewById(R.id.item_quantity)

        fun bind(item: Item) {
            itemName.text = item.name
            itemQuantity.setText(item.quantity.toString())
            itemQuantity.addTextChangedListener {
                item.quantity = if(it.toString().isEmpty()) 0 else it.toString().toInt()
            }
        }
    }
}

위의 코드에서는 ItemAdapter 클래스를 만들고, ItemViewHolder 내부에 각 EditText의 값을 실시간으로 업데이트합니다.

사용자 입력 처리하기

마지막으로, 사용자가 입력한 값을 처리하기 위해 TextChangeListener를 활용하여 각 입력 필드의 변경사항을 감지하고 이를 데이터에 반영하도록 합니다.

이제 앱을 실행하여 리사이클러뷰의 각 아이템에 계산기를 추가한 후, 사용자가 값을 입력하면 해당 값이 실시간으로 반영되는 것을 확인할 수 있을 것입니다.

계산기를 통해 수량을 조절하는 등의 작업이 필요한 경우에 유용하게 활용될 수 있습니다.

마무리

이제 단계별로 리사이클러뷰에 아이템에 계산기를 추가하는 방법에 대해 알아보았습니다. 이를 통해 사용자가 각 아이템에 값을 입력하여 실시간으로 반영할 수 있는 원활한 사용자 경험을 제공할 수 있을 것입니다.

감사합니다!

참고 문서