gpt4 book ai didi

Android:onItemClick 仅返回第一个选定的项目

转载 作者:行者123 更新时间:2023-11-30 04:49:04 33 4
gpt4 key购买 nike

我正在使用 ArrayAdapter 来填充 ListView。选择和项目后,它会显示一个确认 Y/N 对话框。如果用户的选择是否定的,那么他应该能够选择另一个显示相同对话框的项目。等等。

这是我的代码:

lView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(final AdapterView<?> parent, final View v, final int index, final long id) {


Toast.makeText("Selected file"+ mFiles.get(index).getfileName(),
Toast.LENGTH_SHORT).show();


SelectedFile = mFiles.get(index);



showDialog(DIALOG_CONFIRMIMPORT_ID);
}
});

奇怪的是,虽然“Toast”每次都显示点击的项目,但只有自 Activity 启动以来第一个选择的项目被传递给“SelectedFile”。无论您点击不同的项目多少次,“SelectedFile”始终采用相同的值,即第一个点击项目的值,在此代码之外。

这是我的对话代码:

Protected Dialog onCreateDialog(int id) {
switch(id) {
case DIALOG_CONFIRMIMPORT_ID:
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
String message = String.format(getString(R.string.importstudentfileconfirm),SelectedFile.getfileName());

builder.setMessage(message)
.setCancelable(false)
.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// Activity.this.finish();
// startActivity(new Intent(Activity.this, LOL.class));
}
})
.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
SelectedFile = null;
dismissDialog(DIALOG_CONFIRMIMPORT_ID);
mFiles.notifyAll();
}
});

AlertDialog alert = builder.create();
return alert;
}
}
return null;
}

非常感谢您的帮助!

最佳答案

我猜这与 onCreateDialog 方法仅在第一次创建对话框时被调用有关。因此,当您第一次看到该对话框时,它将具有正确的文件名。

调用 onCreateDialog 后,调用 onPrepareDialog(...)。 onPrepareDialog,允许您在对话框创建之后但在显示之前更改对话框。

请记住,在所有内容的背后,Android 不会在您每次要显示 DIALOG_CONFIRMIMPORT_ID 对话框时为您创建一个新的对话框。每次都实例化一个新对话在计算上太昂贵了。相反,它只创建一次,这会导致调用 onCreatDialog,然后调用 onPrepareDialog。每次显示对话框时,它只调用 onPrepareDialog。

请查看 Android 开发者网站上的以下文章。它解释得很清楚。

http://developer.android.com/guide/topics/ui/dialogs.html#ShowingADialog

因此,尝试仅使用 onCreateDialog 初始化不会在对话框显示之间更改的内容,然后使用 onPrepareDialog 方法动态更新对话框的内容(即获取新文件名)

干杯!

关于Android:onItemClick 仅返回第一个选定的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4038268/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com