我是Java的新手,我有一个简单的问题。在下面的代码中:
conversation.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
if (adapter.getItem(position).image && adapter.getItem(position).left) {
String imgName = ((Message)arg1.findViewById(R.id.imageUploaded).getTag()).message;
try {
AlertDialog.Builder confirmQuit = new AlertDialog.Builder(Chat.this);
confirmQuit.setMessage("Download image?");
// Buttons on dialog
confirmQuit.setPositiveButton("Download", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
confirmQuit.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Do nothing
}
});
confirmQuit.create();
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
}
这是一个Android代码,我想知道如何访问position
内的变量imgName
和DialogInterface.OnClickListener
?
通常在这些情况下,我会创建一个&#34;全球&#34;私有变量作为我活动的一个属性,所以我可以在任何地方访问它,但它看起来并不正确。有人可以帮忙吗?
提前致谢。
答案 0 :(得分:2)
只需更改
String imgName = ...
到
final String imgName = ...
来自Anonymous Classes的Java教程:
访问附加范围的本地变量
与本地类一样,匿名类可以捕获变量;他们有 对封闭范围的局部变量的相同访问:
- 匿名类可以访问其封闭类的成员。
- 匿名类无法访问其封闭范围内未声明为最终或有效最终的局部变量。