[kotlin] 리사이클러뷰에서 아이템에 QR 코드 기능 추가하기

안녕하세요! 안드로이드 앱 개발자 여러분, 오늘은 리사이클러뷰QR 코드 기능을 추가하는 방법에 대해 알아보겠습니다.

개발 환경

이 예시에서는 Kotlin을 기반으로 안드로이드 스튜디오를 사용했습니다.

QR 코드 스캔 라이브러리

우리는 ZXing 라이브러리를 사용하여 QR 코드 스캔을 구현할 것입니다. 먼저 build.gradle 파일에 다음 의존성을 추가합니다.

implementation 'com.journeyapps:zxing-android-embedded:4.2.0'
implementation 'com.google.zxing:core:3.4.1'

이제 QR 코드 스캔을 처리할 Activity를 만들어보겠습니다.

import android.app.Activity
import com.google.zxing.integration.android.IntentIntegrator

class QRScanActivity : Activity() {

    fun startQRScan() {
        val integrator = IntentIntegrator(this)
        integrator.setOrientationLocked(false)
        integrator.initiateScan()
    }

    // onActivityResult 메서드에서 스캔 결과 처리
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        val result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data)
        if (result != null) {
            if (result.contents == null) {
                // 취소됨
            } else {
                val scannedData = result.contents
                // 스캔된 데이터 처리
            }
        } else {
            super.onActivityResult(requestCode, resultCode, data)
        }
    }
}

리사이클러뷰 아이템에 QR 코드 스캔 버튼 추가

이제 리사이클러뷰의 각 아이템에 QR 코드 스캔을 위한 버튼을 추가해봅시다. RecyclerView.AdapterViewHolder 클래스에 버튼을 추가하고, 해당 버튼을 클릭했을 때 QRScanActivity를 실행하도록 합니다.

import android.view.View
import android.widget.Button
import androidx.recyclerview.widget.RecyclerView

class MyItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
    private val qrScanButton: Button = view.findViewById(R.id.qrScanButton)

    init {
        qrScanButton.setOnClickListener {
            val context = itemView.context
            val intent = Intent(context, QRScanActivity::class.java)
            context.startActivity(intent)
        }
    }
}

이제 이 버튼을 원하는 레이아웃에 추가하고, 각 아이템 뷰와 뷰홀더를 바인딩하는 코드를 작성하면 됩니다.

이제 여러분은 리사이클러뷰의 각 아이템에 QR 코드 스캔 기능을 쉽게 추가할 수 있습니다. 즐겁게 코딩하세요!

References