我正在尝试为我的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/

10-12 04:19