0

我需要显示从 API 获得的文件和文件夹的目录列表。一旦用户单击其中一个目录,我就会查找它的子目录并将它们列在右侧的父目录下,这样就可以继续。不确定最好的方法是什么?

我做了一个设置视图并有一个“目录”设置。单击它后,我需要在 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 回答