私は 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);
}
});
奇妙なことに、「トースト」は毎回クリックされたアイテムを表示しますが、アクティビティが開始されてから最初に選択されたアイテムのみが「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;
}
助けてくれてありがとう!