1
該代碼在Java中工作,但在轉換爲Kotlin時不再有效。它拋出一個IndexOutOfBoundsException
。從列表中拋出拋出異常時拋出IndexOutOfBoundsException:Java-> Kotlin
這裏是原始的Java:
grid_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String selectedItem = ((TextView) view.findViewById(R.id.tag_name)).getText().toString();
for (int j = 0; j < itemList.size(); j++){
String tempString = itemList.get(j);
if(tempString.equals(selectedItem)) {
Log.d("Update", "Removing: " + selectedItem);
itemList.remove(j);
}
}
}
});
這是新科特林:
grid_view!!.onItemClickListener = AdapterView.OnItemClickListener { _, _, _, _ ->
val selectedItem = (tag_name as TextView).text.toString()
itemList.indices.forEach {
val tempString = itemList[it]
if (tempString == selectedItem) {
Log.d("Update", "Removing: " + selectedItem)
itemList.removeAt(it)
}
}
}
謝謝,這個例外不再被拋出。但是,它仍然不像以前那樣行事。無論grid_view中哪個項目被點擊,第一項都被刪除。日誌語句顯示selectedItem始終是第一個。 – Roc47HS
@ Roc47HS嗨,我不擅長英語。請說清楚,先生。 :) –
抱歉,不清楚。 grid_view應該在點擊某個項目時將其從列表和grid_view中移除。這就是它在原始Java代碼中的表現。現在在Kotlin中,即使我點擊grid_view中的第二個或第三個項目,它也會刪除第一個項目。 – Roc47HS