我正在尝试为我的Android应用程序中的某些元素设置OnClickListener
,这些元素是动态定义的,没有给定id
,但是将它们放在LinearLayouts
中,该List
存在于LinearLayouts
中cc>,因此我将OnClickListener
设置如下:
List<LinearLayout> inner_ver = setElemets(1);
for (LinearLayout l: inner_ver){
l.getChildAt(0).setOnClickListener(new OnClickListener() { // here's the syntax error
@Override
public void onClick(View v) {
l.getChildAt(1).setBackgroundResource(R.drawable.home_curtopen);
}
});
}
但是我得到了标题中提到的
l
语法错误,我不能仅仅将其声明为final
原因,然后它仅将更改分配给List
中的最后一个元素。 最佳答案
拆分为单独的方法:
for (LinearLayout l: inner_ver){
assignListener(l);
}
public void assignListener(final LinearLayout l) {
l.getChildAt(0).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
l.getChildAt(1).setBackgroundResource(R.drawable.home_curtopen);
}
});
}
关于android - 无法以其他方法定义的内部类中引用非最终变量l,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21075464/