このリンクで説明されているものとほぼ同じ AlertDialog セットアップがあります: https://stackoverflow.com/a/4697761/2593088
SD カードから写真を取り出すために使用するので、写真とその横にある名前がリストに表示されます。一度に 1 枚の写真を取得するだけでよい場合はうまく機能しますが、すべての写真を選択して一度に取得できればさらに便利です。問題は、クリックするとすぐにダイアログが閉じることです。これを回避する方法を検索しましたが、見つけた方法はどれも必要なものには機能しません。1 つの方法は、ダイアログの OnShow リスナーで onClick リスナーを上書きすることでしたが、リスト項目ではなく、ポジティブ/ネガティブ/ニュートラル ボタンを上書きする方法しかわかりませんでした。ダイアログを作成するときに setMultiChoiceItems を使用してアイコンなしで機能させることもできたので、この時点でアイコンを追加するだけの簡単な方法があれば、それも機能します。私'
どんな助けでも大歓迎です。
編集:アイコンがないことを除いて、これは私が持っているものです。
dialog = builder.setAdapter(adapter, null).setMultiChoiceItems(mFileList, null, new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1,
boolean arg2) {
String selectedFile = mFileList[arg1];
if(selectedFile.equals("Up One Folder")) selectedFile = "..";
String mChosenFile = tempDir + "/" + selectedFile;
File f = new File(mChosenFile);
if(f.isDirectory()) {
// it is a directory, clear all selections and go to the next directory
selectedImages.clear();
dialog.dismiss();
loadFileList(mChosenFile);
getFiles(false);
} else {
if(arg2) {
selectedImages.add(tempDir + "/" + selectedFile);
}
}
}
})
setAdapter と setMultiChoiceItems の両方を使用するとうまくいくことを期待していましたが、複数選択項目が設定されている場合、アダプターを設定しても何も起こりません。残念ながら、 setMultiChoiceItems にはアダプターを使用するコンストラクターがありません。