Я использую 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()
}
}