2017-07-18 4 views
0

GridViewにTextViewsが設定されています。ユーザーがTextViewをクリックしてTextViewがGridViewから削除され、そのTextViewに表示される文字列がArrayListから削除されるようにしたいと思います。これはもともとはJavaで動作しましたが、Kotlinに変換された時点では動作しなくなり、クリックされた項目に関係なく最初の項目が削除されます。ここでGridViewはアイテムがクリックされたときに最初のアイテムのみを削除します。 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

:まず、私はAndroidデベロッパーないんだけど、私はあなたがOnItemClickListenerからpositionを取得する必要があると思うとforループは、たとえば、そのようなことを行う必要はありません? –

+0

私は、実際には、2つの別々の無関係な問題があることに気付きました。だから私は、元の問題はあなたのおかげで修正されたので、2番目の問題はそれ自身の疑問を正当化すると思った。 – Roc47HS

答えて

1

私はすでにあなたの前の質問に答えていると思います。あなたがやり方を知らなければ、私はあなたが問題を解決するのを手伝ってうれしいです。あなたについて間違って何こんにちは、

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() 
    } 
} 
+0

こんにちは、私は他の質問のコメントであなたの答えを理解していませんでした。しかし、私はここであなたの答えを理解し、それは今完全に動作します。ありがとうございました! – Roc47HS

+0

@ Roc47HSすみません、私は悪い英語であなたを混乱させています、私は中国から来ています:) –

関連する問題