Заменить элементы в ArrayAdapter динамически не работает - PullRequest
0 голосов
/ 15 ноября 2018

Я использую AutoCompleteTextView, чтобы показать элементы, которые могут быть выбраны пользователем. Если пользователь что-то наберет, он отправит подстроку на сервер, а сервер вернет список объектов. Я хочу заменить список ArrayAdapter этим новым списком, то есть новый список опций появится в выпадающем меню. Но когда я очищаю список и добавляю в него все элементы из нового списка, а затем вызываю notifyDataSetChanged(), в ArrayAdapter (используется ArrayAdapter.count) есть 0 элементов.

objAdapter = ArrayAdapter(activity!!, select_dialog_item_material, itemEntityList)
        itemEditText?.setAdapter(objAdapter)

        itemEditText?.setOnItemClickListener { parent, _, position, _ ->
            (activity as RevActivity).selectedObject = parent.getItemAtPosition(position) as RevObject
            nextButton?.isEnabled = (activity as RevActivity).selectedObject != null
        }

        itemEditText?.addTextChangedListener(object: TextWatcher{
            override fun afterTextChanged(e: Editable?) {

            }

            override fun beforeTextChanged(query: CharSequence?, start: Int, count: Int, after: Int) {

            }

            override fun onTextChanged(query: CharSequence?, start: Int, before: Int, count: Int) {

                getRevItemsByType(query.toString(), getSelectedType(), (activity as RevActivity).revReportEntity!!, ::revItemCallback)
            }

        })


private fun revItemCallback(revObjects: ArrayList<RevObject>, err: ParseException?){
        if (err == null){
            itemEntityList.clear()
            itemEntityList.addAll(revObjects)
            objAdapter?.clear()
            //itemEntityList.forEachIndexed { index, revObject ->  objAdapter?.insert(revObject, index)}
            objAdapter?.notifyDataSetChanged()
        }
    }
...