подсказка autocompletetextview не появляется при переписывании - PullRequest
1 голос
/ 07 января 2020

В настоящее время я изучаю Android программирование и в настоящее время пытаюсь сделать autocompletetextview, следуя руководству по следующей ссылке https://medium.com/@droidbyme / autocomplete-textview-in- android -a1bf5fc112f6 по этой ссылке I удалось вызвать предложения из ответа на модификацию, но когда я переписал предложение, оно не появилось.

это из моей деятельности

var adapter = SuggestionAdapter(this@Formpengiriman_Activity, R.layout.custom_row, kecamatanModel.getProducts()) autoCompleteTextView.setAdapter(adapter) autoCompleteTextView.setThreshold(1)

это мой kecamatanModel

class KecamatanModel {

private val kecamatan: ArrayList<Kecamatan>

init {
    this.kecamatan = ArrayList<Kecamatan>()
    var call: Call<List<GetKecamatan>> = ApiClient.getClient.showkecamatan()
    call.enqueue(object : Callback<List<GetKecamatan>> {
        override fun onFailure(call: Call<List<GetKecamatan>>, t: Throwable) {

        }

        override fun onResponse(
            call: Call<List<GetKecamatan>>,
            response: Response<List<GetKecamatan>>
        ) {
            if(response.isSuccessful){
                var json = response.body()
                for(i in json?.indices!!){
                    kecamatan.add(Kecamatan(json.get(i).getIDKECAMATAN().toString(), json.get(i).getNAMAKECAMATAN().toString(), json.get(i).getNAMAPROVINSI().toString(), json.get(i).getNAMAKOTA().toString()))
                }
            }
        }

    })

}

fun getProducts(): ArrayList<Kecamatan> {
    return this.kecamatan
} }

это мое предложение Адаптер

  class SuggestionAdapter(
      internal val context: Context,
      private val resourceId: Int,
      items: ArrayList<Kecamatan>
    ) : ArrayAdapter<Kecamatan>(context, resourceId, items) {
    private val items: List<Kecamatan>
    private var tempItems: List<Kecamatan>
    private var suggestions: MutableList<Kecamatan>
    private val fruitFilter = object : Filter() {

    override fun convertResultToString(resultValue: Any): CharSequence {
        val fruit = resultValue as Kecamatan
        return fruit.getNama().toString()
    }

    override fun performFiltering(charSequence: CharSequence?): Filter.FilterResults {
        suggestions = ArrayList()
        tempItems = ArrayList(items)
        if (charSequence != null) {
            suggestions.clear()
            for (fruit in tempItems) {
                if (fruit.getNama()?.toLowerCase()?.startsWith(charSequence.toString().toLowerCase())!!) {
                    suggestions.add(fruit)
                }
            }
            val filterResults = Filter.FilterResults()
            filterResults.values = suggestions
            filterResults.count = suggestions.size
            return filterResults
        } else {
            return Filter.FilterResults()
        }
    }

    override fun publishResults(
        charSequence: CharSequence?,
        filterResults: Filter.FilterResults
    ) {
        val tempValues = filterResults.values as ArrayList<Kecamatan>
        if (filterResults != null && filterResults.count > 0) {
            clear()
                for (fruitObj in tempValues) {
                    add(fruitObj)
                }
            notifyDataSetChanged()
        } else {
            clear()
            notifyDataSetChanged()
        }
    }
}

init {
    this.items = items
    tempItems = ArrayList(items)
    suggestions = ArrayList()
    for (i in 0 until items.size) {
        suggestions!!.add(items[i])
    }
}

override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
    var view = convertView
    try {
        if (convertView == null) {
            val inflater = LayoutInflater.from(context)
            view = inflater.inflate(R.layout.custom_row, parent, false)
        }
        val fruit = getItem(position)
        Log.d("kecamatan", fruit?.getNama())
        val name = view?.findViewById(R.id.tv1) as TextView
        name.setText(fruit!!.getprov()+", "+fruit!!.getkota()+", "+fruit!!.getNama())
    } catch (e: Exception) {
        e.printStackTrace()
    }

    return view!!
}

@Nullable
override fun getItem(position: Int): Kecamatan? {
    return items[position]
}

override fun getCount(): Int {
    return items.size
}
override fun getItemId(position: Int): Long {
    return position.toLong()
}
override fun getFilter(): Filter {
    return fruitFilter
}}
...