В настоящее время я изучаю 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
}}