单击某个项目时,GridView 仅删除第一个项目。 Java->科特林
GridView only removing the first item when an item is clicked. Java->Kotlin
我有一个填充有 TextView 的 GridView。我希望这样当用户单击一个 TextView 时,该 TextView 将从 GridView 中删除,并且显示在该 TextView 中的字符串将从 ArrayList 中删除。这最初在 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 }
}
}
我想我已经回答了你之前的问题。如果您不知道该怎么做,我仍然很乐意帮助您解决问题。首先,我不是 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()
}
}
我有一个填充有 TextView 的 GridView。我希望这样当用户单击一个 TextView 时,该 TextView 将从 GridView 中删除,并且显示在该 TextView 中的字符串将从 ArrayList 中删除。这最初在 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 }
}
}
我想我已经回答了你之前的问题。如果您不知道该怎么做,我仍然很乐意帮助您解决问题。首先,我不是 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()
}
}