所以我有一个onItemLongClickListener用于列表视图,它获取传入的参数'int position'。在里面,我有一个alertDialogBuilder,它有两个按钮。我有另一个按钮的onclickListener。我需要从第二个监听器内部访问该位置。反正有没有把它变成一个全球性的呢?
public boolean onItemLongClick(AdapterView parent, View itemView, int position, long id){
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(BookFace.this);
alertDialogBuilder.setTitle("Choose an option.");
alertDialogBuilder
.setMessage("What would you like to do?")
.setCancelable(true)
.setPositiveButton("Edit", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent();
intent.putExtra("position", position); //Can't access this variable
intent.setClass(SomeClass.this, EditActivity.class);
startActivity(intent);
}
感谢您的帮助。
答案 0 :(得分:1)
如果将位置更改为final,则应该允许您从onClick方法中访问它。
答案 1 :(得分:0)
在Java中,只有在首次声明为final
时,才能从内部类声明中访问外部变量。所以你可以添加:
final int selectedPosition = position;
到你的方法的顶部,并在你的额外,即
中使用该值intent.putExtra("position", selectedPosition);