Как мне сделать мой ArrayAdapter глобальным для ListView в MainActivity?
мой код:
class MainActivity : AppCompatActivity() {
var listItems = ArrayList<String>()
private var listAdapter: ArrayAdapter<String>? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
listAdapter = ArrayAdapter(
this,
android.R.layout.simple_list_item_1,
listItems
)
listfield.adapter = listAdapter
listAdapter.add("Hello World!")
listAdapter.add("RFID app")
Так что проблема в том, что это приводит к ошибке во время компиляции: Интеллектуальное приведение к ArrayAdapter невозможно, потому что listAdapter является изменяемым свойством, которое могло бы быть изменено к этому времени. Это произошло бы потому, что невозможно узнать, установил ли другой поток значение listAdapter обратно в ноль, когда. Add вызывается.
Мне нужно, чтобы listAdapter был глобальным, потому что мне нужно вызывать .notifyDataSetChanged () из функции обратного вызова (когда штрих-код был считан считывателем штрих-кода), и если я объявляюlistAdapter в onCreate () не доступен для функции обратного вызова. Так что это должна быть собственность. Котлин жалуется, что свойство должно быть либо инициализировано, либо объявлено как «абстрактное». Очевидно, что здесь «abstract» не сработает, но я не могу инициализировать его как «null», так как для инициализации требуется контекст, а контекст недоступен до onCreate (). Как можно поступить об этом в Котлине?
Спасибо, // Jonas