我有一个使用ListActivity的Android应用。单击列表中的项目时,我想向用户显示确认对话框,然后对单击的项目执行一些操作。
但是,从对话框的onClick处理程序,我无法从列表onClick事件访问位置变量,所以我无法分辨用户点击的项目。
以下是我想要实现的一个例子:
getListView().setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
// This doesn't work, can't access position from here
Object o = MyListActivity.this.getListView().getItemAtPosition(position);
testFunction(o);
break;
}
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(MyListActivity.this);
builder.setMessage("Are you sure you want to do this?").setPositiveButton("Yes", dialogClickListener)
.setNegativeButton("No", dialogClickListener).show();
}
});
我想我可以通过将它存储在Activity上的成员变量中来传递信息,但似乎应该有更好的解决方案!任何人都可以用正确/明智的方式填写我这个吗?
谢谢, 安迪
答案 0 :(得分:2)
不确定这是否是“正确”的方法,但你可以这样做:
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
final int InternalPosition = position;
然后在你的处理程序中使用'InternalPosition'
Object o = MyListActivity.this.getListView().getItemAtPosition(InternalPosition);
不确定这是否适用于您的情况,但我知道您可以从侦听器访问“最终”变量。