在android中我有以下情况(不工作代码,只是为了显示我想要谈论的内容):
public class Test extends ArrayAdapter<MyDataObject> {
public final int number = 4;
public Test(int number) {
this.number = number;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// lines of code
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Log.d("TESTTEST", "Number: " + this.number);
}
});
// other lines of code
// ...
变量number
是公开的,但我无法在onClick
内引用其内容。
是否有一种简单的方法可以在函数number
中使用变量onClick
的内容?或者我需要一个其他和不相关的类,函数,方法,接口的灵气来源......?
答案 0 :(得分:1)
删除
中的this
个关键字
Log.d("TESTTEST", "Number: " + number);
this
引用当前的侦听器实例,而不是父类。
您还可以使用以下内容获取number
:
Log.d("TESTTEST", "Number: " + Test.this.number);
此外,setNumber
正在尝试将值设置为最终变量,除非从变量声明中删除final
,否则不会编译。
如果你的监听器是这样的话,在方法中使用this
:
imageView.setOnClickListener(new View.OnClickListener() {
int number = 0; // in this case you can use 'this'
@Override
public void onClick(View arg0) {
Log.d("TESTTEST", "Number: " + this.number);
}
});