0

このリンクで説明されているものとほぼ同じ 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 にはアダプターを使用するコンストラクターがありません。

4

2 に答える 2

1

setMultiChoiceItems を使用する代わりに、独自のカスタム ダイアログを作成する必要がありました。アダプターを備えた複数選択コンストラクターがないことに気付いた瞬間から、このようにしなければならないことを知っていたはずです。デフォルトのリストダイアログはアダプターで構築できるので、それを回避する方法があることを望んでいました。うまくいけば、これは将来変わるでしょう。

于 2013-07-26T18:38:10.933 に答える