在 groovy 中将侦听器转换为闭包
Converting listeners to closures in groovy
我决定将我的 android 项目转换为 groovy。我是 Groovy 的新手,正在尝试使用 Groovy 的一些魔法来使代码可读。
我试图转换的代码片段之一是匿名的 OnXXXClickListener。
那么我该如何转换
_children.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
void onItemClick(
final AdapterView<?> parent,
final View view, final int position, final long id) {
}
})
闭包更易读
找到这个 - http://mrhaki.blogspot.co.il/2013/11/groovy-goodness-implicit-closure.html
并尝试使用
AdapterView.OnItemClickListener listener = {foo}
但是我得到 Cannot assign closure to OnItemClickListener
我写了完整的闭包,Android studio 接受了它,没有任何错误。
AdapterView.OnItemClickListener listener = {
parent, view, long position, id ->
startActivity(
new Intent(getApplicationContext(), ChildDetails.class)
.putExtra( ChildDetails.CHILD_NAME, position ))
}
_children.setOnItemClickListener listener
不确定 "android on groovy",但简单地说 groovy 我会这样写 id:
def closure = { parent, view, long position, id -> yourCode() }
_children.onItemClickListener = [ onItemClick:closure ] as OnItemClickListener
我决定将我的 android 项目转换为 groovy。我是 Groovy 的新手,正在尝试使用 Groovy 的一些魔法来使代码可读。
我试图转换的代码片段之一是匿名的 OnXXXClickListener。
那么我该如何转换
_children.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
void onItemClick(
final AdapterView<?> parent,
final View view, final int position, final long id) {
}
})
闭包更易读
找到这个 - http://mrhaki.blogspot.co.il/2013/11/groovy-goodness-implicit-closure.html
并尝试使用
AdapterView.OnItemClickListener listener = {foo}
但是我得到 Cannot assign closure to OnItemClickListener
我写了完整的闭包,Android studio 接受了它,没有任何错误。
AdapterView.OnItemClickListener listener = {
parent, view, long position, id ->
startActivity(
new Intent(getApplicationContext(), ChildDetails.class)
.putExtra( ChildDetails.CHILD_NAME, position ))
}
_children.setOnItemClickListener listener
不确定 "android on groovy",但简单地说 groovy 我会这样写 id:
def closure = { parent, view, long position, id -> yourCode() }
_children.onItemClickListener = [ onItemClick:closure ] as OnItemClickListener