单击某个项目时,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()
    }
}