[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를 활용하여 각 입력 필드의 변경사항을 감지하고 이를 데이터에 반영하도록 합니다.
이제 앱을 실행하여 리사이클러뷰의 각 아이템에 계산기를 추가한 후, 사용자가 값을 입력하면 해당 값이 실시간으로 반영되는 것을 확인할 수 있을 것입니다.
계산기를 통해 수량을 조절하는 등의 작업이 필요한 경우에 유용하게 활용될 수 있습니다.
마무리
이제 단계별로 리사이클러뷰에 아이템에 계산기를 추가하는 방법에 대해 알아보았습니다. 이를 통해 사용자가 각 아이템에 값을 입력하여 실시간으로 반영할 수 있는 원활한 사용자 경험을 제공할 수 있을 것입니다.
감사합니다!