Android 指定为非null的Autocompletetextview返回参数为null

Android 指定为非null的Autocompletetextview返回参数为null,android,kotlin,autocompletetextview,illegalargumentexception,Android,Kotlin,Autocompletetextview,Illegalargumentexception,我在应用程序中实现了这个自定义的autocompletetextview。就在用户试图键入一些文本时,应用程序停止了。我检查了我的web api是否正常工作。我是科特林的新手,所以我真的不知道如何解决这个问题 这是我的自定义适配器,看起来像 class AutoCompleteAdapter(context: Context, resource: Int) : ArrayAdapter<String>(context, resource), Filterable { priv

我在应用程序中实现了这个自定义的autocompletetextview。就在用户试图键入一些文本时,应用程序停止了。我检查了我的web api是否正常工作。我是科特林的新手,所以我真的不知道如何解决这个问题

这是我的自定义适配器,看起来像

class AutoCompleteAdapter(context: Context, resource: Int) : ArrayAdapter<String>(context, resource), Filterable {
    private val mlistData: ArrayList<String>

    init {
        mlistData = ArrayList()
    }

    fun setData(list: ArrayList<String>) {
        mlistData.clear()
        mlistData.addAll(list)
    }

    override fun getCount(): Int {
        return mlistData.size
    }

    override fun getItem(position: Int): String? {
        return mlistData[position]
    }

    /**
     * Used to Return the full object directly from adapter.
     *
     * @param position
     * @return
     */
    fun getObject(position: Int): String {
        return mlistData[position]
    }

    override fun getFilter(): Filter {
        return object : Filter() {
            override fun performFiltering(constraint: CharSequence?): FilterResults {
                val filterResults = FilterResults()
                if (constraint != null) {
                    filterResults.values = mlistData
                    filterResults.count = mlistData.size
                }
                return filterResults
            }

            override fun publishResults(constraint: CharSequence, results: FilterResults?) {
                if (results != null && results.count > 0) {
                    notifyDataSetChanged()
                } else {
                    notifyDataSetInvalidated()
                }
            }
        }
    }
}
这是我使用截取调用web api的地方

private fun loadProvinsi(provinsi: String) {
        val stringRequest = StringRequest(
            Request.Method.GET, EndPoints.URL_GET_PROVINSI + "&keyword=" + provinsi,
            Response.Listener<String> { s ->
                try {
                    val obj = JSONObject(s)
                    val list = ArrayList<String>()
                    if (!obj.equals("")) {
                        val array = obj.getJSONArray("list")
                        for (i in 0 until array.length() - 1) {
                            val objectProvinsi = array.getJSONObject(i)
                            objectProvinsi.getString("value")
                            list.add(objectProvinsi.getString("value"))
                        }
                    } else {
                        Toast.makeText(applicationContext, obj.getString("message"), Toast.LENGTH_LONG).show()
                    }
                    autoCompleteAdapter.setData(list)
                    autoCompleteAdapter.notifyDataSetChanged()
                } catch (e: JSONException) {
                    e.printStackTrace()
                }
            },
            Response.ErrorListener { volleyError ->
                Toast.makeText(applicationContext, volleyError.message, Toast.LENGTH_LONG).show()
            })
        val requestQueue = Volley.newRequestQueue(this)
        requestQueue.add<String>(stringRequest)
    }
换成这个

override fun publishResults(constraint: CharSequence?, results: FilterResults?) {
                if (results != null && results.count > 0) {
                    notifyDataSetChanged()
                } else {
                    notifyDataSetInvalidated()
                }
            }
在错误消息中,它说constraint:CharSequence?为null,但您声明它为非null,没有问号,因此只需为它添加问号即可更改为

override fun publishResults(constraint: CharSequence?, results: FilterResults?) {
                if (results != null && results.count > 0) {
                    notifyDataSetChanged()
                } else {
                    notifyDataSetInvalidated()
                }
            }
在错误消息中,它说constraint:CharSequence?是null,但是您声明它为非null,没有问号,所以只需为它添加问号

override fun publishResults(constraint: CharSequence?, results: FilterResults?) {
                if (results != null && results.count > 0) {
                    notifyDataSetChanged()
                } else {
                    notifyDataSetInvalidated()
                }
            }