我目前正在尝试将数据从 onItemLongClick 方法传递到 AlertDialog ,并且我正在尝试找到关于如何执行此操作的最佳/正确做法。
虽然我目前正在做的事情有效,但感觉不对,我希望这里的人能够为我提供正确的解决方案并解释为什么它是正确的解决方案。
我的代码如下,目前在长 onItemLongClick 中,我正在为已单击的列表视图中的行项目设置一个属性,然后从 AlertDialog.Builder 中访问该属性。
public class ListViewExample {
private long clickedRowId;
....
mListView.setOnItemLongClickListener(new ListView.OnItemLongClickListener () {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long rowId) {
clickedRowId = rowId;
/* here is my issue, surely it is better to pass rowId into showOptionsDialog as an argument? */
showOptionsDialog();
return true;
}
});
private void showOptionsDialog() {
new AlertDialog.Builder(this.context)
.setTitle(R.string.stack_dialog_title)
.setItems(R.array.stack_options, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int selected) {
switch (selected) {
case 0:
//perform selection #1
break;
case 1:
//perform selection #2
break;
case 2:
deleteRowItem(clickedRowId);
break;
}
}
}).show();
}
}