Как использовать сканер ZXing для сравнения отсканированного кода с сохраненным значением - PullRequest
0 голосов
/ 26 февраля 2020

Я просмотрел API и форумы для сканера ZXing, чтобы попытаться найти лучший способ сравнить отсканированное значение с сохраненным значением в моем приложении, но не нашел ничего, что решило бы мою проблему. У меня есть RecyclerView, который заполнен карточками, и на каждой карточке есть кнопка, которую пользователь нажимает для запуска сканирования. Если отсканированный штрих-код соответствует идентификатору предмета, к которому была прикреплена кнопка на карточке, то этот предмет следует удалить из списка. Моя проблема в том, что я не уверен, как сравнить эти два идентификатора. В моем RecyclerViewAdapter у меня есть следующий код для onClickListener

holder.scanBtn.setOnClickListener {

            if (context is Activity) {
                val integrator = IntentIntegrator(context)
                integrator.addExtra("itemID", scanItems[position].id)
                integrator.initiateScan()


            } else {
                // If, somehow, the context wasn't an activity then issue this error
                Toast.makeText(context, "An unexpected error occurred", Toast.LENGTH_SHORT).show()
            }

, поэтому я добавляю идентификатор элемента в качестве дополнительного к интегратору, а затем запускаю его. Проблема в том, что в onActivityResult в моем классе активности он не обнаруживает, что к моему идентификатору добавлены дополнительные данные. Насколько мне известно, это потому, что сканер не передает обратно данные, которые были переданы в него изначально. Это код, который у меня есть в onActivityResult

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)

        var result: IntentResult? = IntentIntegrator.parseActivityResult(requestCode, resultCode, data)
        val checkedID = data?.getStringExtra("itemID")

        if(result != null){

            if(result.contents == checkedID){
                Toast.makeText(this, "Item scanned and removing: " + result.contents, Toast.LENGTH_SHORT).show()
            } else {
                Toast.makeText(this, "Item scanned but not removed: " + result.contents, Toast.LENGTH_SHORT).show()
            }
        } else {
            super.onActivityResult(requestCode, resultCode, data)
        }
    }

Есть ли способ передать идентификатор кнопки (не отсканированный идентификатор) обратно из RecyclerViewAdapter в onActivityResult?

Документация по API Форум по дополнительным возможностям интеграции сканирования

...