#android #kotlin #listview #arraylist #baseadapter
Вопрос:
Listview setOnItemClickListener в getItemAtPosition задает позицию элемента, а не значение. wheb нажимает на элемент списка, затем выдает ошибку : java.lang.Исключение ClassCastException: java.lang.Целое число не может быть приведено к java.lang.Строка. Я постараюсь после .toString дать целочисленное значение. итак, как получить элемент списка значений элемента.
Код
listView.setOnItemClickListener { parent, view, position, id ->
val query : String = parent.getItemAtPosition(position) as String
searchView?.setQuery(query,true)
}
Создайте Пользовательский Список С Помощью Базового Адаптера.
SearchAdapter.kt
class SearchAdapter(val searchList : ArrayList<Search>, val context: Context) : BaseAdapter() {
override fun getCount(): Int {
return searchList.size
}
override fun getItem(position: Int): Any {
return position
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
val convertView = LayoutInflater.from(context).inflate(R.layout.textview_list,parent,false)
val image = convertView.findViewById<ImageView>(R.id.imageViewHistory)
val textView = convertView.findViewById<TextView>(R.id.text_list_view)
val imageClear = convertView.findViewById<ImageView>(R.id.imageViewClear)
val search = searchList.get(position)
image.setImageResource(R.drawable.ic_baseline_search_24)
textView.text = search.search
return convertView
}
}
Комментарии:
1. Как
Search
это выглядит?2. попробуйте этот код.
val query = searchList.get(position)
Ответ №1:
в поиске адаптера :
override fun getItem(position: Int): Any {
return searchList.get(position)
}
в setOnItemClickListener :
val search = parent.getItemAtPosition(position) as Search
val query = search.query