2 u010477502 u010477502 于 2015.05.27 16:17 提问

android 在onClick中如何使用局部变量

Variable groupPosition is accessed from within inner class,needs to be declared final.

图片说明

3个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.05.27 16:35
已采纳
 继承一下
 class MyClickListener implements View.OnClickListener {
        private int groupPosition;
        private int childPosition;
        public MyClickListener(int groupPosition,int childPosition){
            this.groupPosition = groupPosition;
            this.childPosition = childPosition;
        }
        public void onClick(View v) {
            System.out.println(this.groupPosition);
            System.out.println(this.childPosition);
        }
    }

        然后

        childImage.setOnClickListener(new MyClickListener(groupPosition,childPosition));
crazy1235
crazy1235 这位大哥下手好快~~~
2 年多之前 回复
jm9393993
jm9393993   2015.05.28 08:56

这个简单啊,在方法参数定义前头加一个final就好了。因为这是个匿名内部类,需要传入全局变量或者是final修饰的变量

u010361276
u010361276 正解 一个final 搞定
2 年多之前 回复
crazy1235
crazy1235   Ds   Rxr 2015.05.28 09:13

写一个内部类就行了。

 private class ShareOnClickListener implements OnClickListener {
        private int position;

        public ShareOnClickListener(int position) {
            this.position = position;
        }

        @Override
        public void onClick(View v) {
        // 。。。。。。
        }
    }

调用:

hHolder.shareLl.setOnClickListener(new ShareOnClickListener(position)); 
Csdn user default icon
上传中...
上传图片
插入图片