因此,我有一个用于列表视图的onItemLongClickListener,该列表视图传递了一个参数“ int位置”。在内部,我有一个带有两个按钮的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); }
谢谢你的帮助。
在Java中,只有先将内部变量声明为,才能从内部类声明访问外部变量final。因此,您可以添加:
final
final int selectedPosition = position;
到方法的顶部,并在您的额外值中使用该值,即
intent.putExtra("position", selectedPosition);