0

API から取得したファイルとフォルダーのディレクトリ リストを表示する必要があります。ユーザーがディレクトリの 1 つをクリックすると、そのサブディレクトリを探して、すぐ右側の親ディレクトリの下にリストします。これに最適な方法がわからない?

設定ビューを作成し、「ディレクトリ」設定を行いました。クリックしたら、PreferenceScreen にサブディレクトリをロードする必要があります。そして、ユーザーはサブディレクトリにドリルダウンし、 checkBoxPreferenceのようなもので必要なものを選択できる必要があります

したがって、最終的には、チェック済みディレクトリのリストを作成できます。

私のアイデア

  1. フォルダーを表示し、ユーザーがフォルダーをクリックすると、サブフォルダーがスライドして表示されます。
  2. フォルダーを表示します。ユーザーがフォルダーをクリックすると、親フォルダーのすぐ下にサブフォルダーが表示され、子フォルダーが少し右に移動します。
  3. checkBoxPreferencesとして選択されたフォルダーを表示し、ユーザーがフォルダーを選択する新しいビューを開始するボタンを表示します

私は本当に Android 開発に慣れていないので、これらをどのように実装すればよいかわかりません。

試してみるかもしれないので、私をある方向に向けてもらえますか?コード例を求めているのではなく、考えられる方法やアイデアの論理的な説明を求めているだけですか?

4

1 に答える 1

3

あなたの質問は非常に抽象的ですので、具体的な回答はできません。

ただし、いくつかのガイダンスと例を提供できます。

環境設定を動的に追加し (EditTextPreference を CheckboxPreference に置き換えます)、その前にファイルのリストを取得する例:

SettingsActivity (PreferenceActivity を拡張)

private void setHomeDirectoryPreference(String home_dir)
{
    final EditTextPreference etp = new EditTextPreference(this);

    etp.setKey("home_directory");
    etp.setTitle("Home directory");
    //...
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

    ((PreferenceScreen) findPreference("initial_preference")).addPreference(etp);
}

ファイルのサブファイルの一覧表示:

file.listFiles();

また、基になるファイルが存在するかどうかを頻繁に確認する必要がある場合があります。

f.exists();

クリックしたら、PreferenceScreen にサブディレクトリをロードする必要があります

個人的には、PreferenceDialog と ListView を使用してそれを行います。

DialogPreference の例:

public class HiddenFilesDialogPreference extends DialogPreference {

    public static Context ctx;

    public HiddenFilesDialogPreference(Context context, AttributeSet attrs) {
        super(context, attrs);

        this.ctx = context;
    }


    @Override
    protected View onCreateDialogView() {

        LayoutInflater inflater = ((Activity) ctx).getLayoutInflater();

        View vw = inflater.inflate(R.layout.content_view, null);

        ListView lv = (ListView) vw.findViewById(android.R.id.list);

        File[] hidden_files = HiddenFileHandler.getAllHiddenFilesAsFiles();

        HiddenFilesListAdapter adapter = new HiddenFilesListAdapter(ctx, hidden_files);
        lv.setAdapter(adapter);

        return vw;
    }

    @Override
    protected void onDialogClosed(boolean positiveResult) {
        super.onDialogClosed(positiveResult);
        persistBoolean(positiveResult);
    }

    @Override
    public void onClick (DialogInterface dialog, int which)
    {
        super.onClick(dialog, which);

        Log.v("which", Integer.toString(which));

        if(which == -1) { //Clear all
            HiddenFileHandler hfh = new HiddenFileHandler(ctx);

            hfh.clearHiddenFiles();
        }
    }

}

次に、ダイアログで onClickListeners() を設定して、ダイアログの内容などを置き換えることができます。

具体的な実装から始めて、より具体的な質問に戻ります。

于 2013-02-27T15:04:04.130 に答える