动态替换ArrayAdapter中的项目不起作用

时间:2018-11-15 13:49:40

标签: android parse-platform kotlin android-arrayadapter

我正在使用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()
        }
    }

0 个答案:

没有答案