如何从 ListView setOnItemClickListener 获取项目值?

Posted

技术标签:

【中文标题】如何从 ListView setOnItemClickListener 获取项目值?【英文标题】:how to get item value from ListView setOnItemClickListener? 【发布时间】:2021-11-10 21:15:46 【问题描述】:

getItemAtPosition 中的 Listview setOnItemClickListener 给出项目位置而不给出值。 wheb 单击 Listview 项,然后给出错误:java.lang.ClassCastException:java.lang.Integer 无法转换为 java.lang.String。我将尝试在 .toString 之后给出整数值。那么,如何获取 Item 值 Listview 项。

代码

listView.setOnItemClickListener  parent, view, position, id ->
     val query : String = parent.getItemAtPosition(position) as String
     searchView?.setQuery(query,true)

使用 BaseAdapter 创建自定义 ListView。

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
        
    

【问题讨论】:

Search 长什么样子? 试试这个代码。 val query = searchList.get(position) 【参考方案1】:

在 SearchAdapter 中:

 override fun getItem(position: Int): Any 
      return searchList.get(position)
 

在 setOnItemClickListener 中:

 val search = parent.getItemAtPosition(position) as Search
 val query = search.query

【讨论】:

以上是关于如何从 ListView setOnItemClickListener 获取项目值?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 listVIew 获取图像 id

如何从数组中填充 ListView?

从 Activity 返回时如何获取最后一个 ListView 状态

如何从对象列表添加到 ListView

如何从适配器知道 ListView 的项目是不是可见?

ListView:如何从外部以编程方式访问 Item 的元素?