Как передать несколько значений EditText из адаптера RecyclerView в основную активность? - PullRequest
0 голосов
/ 18 июня 2020

Я хочу передать несколько значений EditText из RecyclerView в основную Activity. Я использовал BroadcastReceiver, чтобы справиться с этим. И addTextChangedListener используется для получения изменяющегося текста из EditText. Здесь я поделился своим кодом. Пожалуйста, проверьте и предложите решение.

Код адаптера:

holder.textBox.addTextChangedListener(object : TextWatcher {
    override fun afterTextChanged(p0: Editable?) {
        var texts = ArrayList<String>()
        texts.add(p0.toString())
        val intent = Intent("custom-message")
        intent.putStringArrayListExtra("quantity", texts)
        LocalBroadcastManager.getInstance(context).sendBroadcast(intent)

    }

    override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}

    override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
})

Код MainActivity:

val broadCastReceiver = object : BroadcastReceiver() {
    override fun onReceive(contxt: Context?, intent: Intent?) {
        qty = intent!!.getStringArrayListExtra("quantity")
        Log.d("broadCastReceiver", qty.toString())
    }
}

LocalBroadcastManager.getInstance(this)
    .registerReceiver(broadCastReceiver, IntentFilter("custom-message"))

1 Ответ

0 голосов
/ 18 июня 2020

Просто используйте функцию обратного вызова .

  1. создайте интерфейс обратного вызова
  2. убедитесь, что ваше основное действие реализует этот интерфейс обратного вызова.
  3. из адаптера recycleview создать объект функции обратного вызова, который присутствует в интерфейсе.
  4. вызвать функцию обратного вызова вместо приемника brodcast при изменении текста.
...