我有一个填充了TextViews的GridView。我希望这样当用户单击TextView时,从GridView中删除TextView,并从ArrayList中删除该TextView中显示的String。这最初是用Java编写的,但是当转换为Kotlin时它停止工作,现在只删除第一个项目,无论点击哪个项目。
这是Kotlin代码:
grid_view!!.onItemClickListener = AdapterView.OnItemClickListener { _, _, _, _ ->
val selectedItem = (tag_name as TextView).text.toString()
itemList.indices.forEach {
Log.d("Update", "Removing: " + selectedItem)
itemList.removeAll { it == selectedItem }
}
}
答案 0 :(得分:1)
我想我已经回答了你上一个问题。如果您不知道该怎么做,我仍然很乐意帮助您解决问题。首先,我不是Android开发人员,但我认为您需要从OnItemClickListener获取position
并且不需要for
循环执行此类操作,例如:
grid_view!!.onItemClickListener = AdapterView.OnItemClickListener { _, _, pos, _ ->
itemList.remove(pos)
//by convention in android you should operate view on an adapter rather than UI
// v
your_grid_view_adapter.run{
remove(pos)
notifyDataSetChanged()
}
}