浏览在线文件夹结构 - 处理后退按钮(保存上一个视图?)

时间:2014-04-10 08:50:55

标签: android

所以我创建了一个浏览在线文件和文件夹的应用程序,它使用API​​来列出文件和文件夹并显示它们。

我使用自定义ListView来显示文件和文件夹。

用户可以单击文件夹,然后刷新相同的Activity ListView并显示该文件夹中的文件和文件夹。

现在,我正在处理BACK按钮以从父目录中提取文件和文件夹。但加载文件和文件夹(几秒钟)可能会很慢。我认为如果回到上一个文件夹目录更加即时,会更好。

无论如何以某种方式以某种方式保存以前的视图或活动?然后再次显示它,而不必在按下后退按钮时再次重新加载所有文件夹?

道歉,如果这是一个愚蠢的问题,但我是新手!

这是我的后退按钮代码:

public boolean onKeyDown(int keyCode, KeyEvent event){
    //if they hit back button
    if(keyCode == KeyEvent.KEYCODE_BACK) {
        //they have pressed the back key so go up a folder 
        if((currentPath != ROOT)){

            currentPath = currentPath.getParent(); //get Parent folder

            //reload the files and folders here!

            return true;
        }
        else
        {
            if(currentPath == DbxPath.ROOT)
            {
                //at root level so go back to main activity
                Intent intentMain = new Intent(this, MainActivity.class);
                startActivity(intentMain);
                return true;
            }

        }

    }
    return false;
}

1 个答案:

答案 0 :(得分:1)

如果用户输入目录,您可以创建一个存储当前适配器的ArrayList<Adapter>,如果用户想要上一个目录,则弹出一个并使用它。这样,您甚至不必在按下后面时使用Adapter构建ListView,只需设置它即可。

替代方式可能会更好,如果您创建HashMap<Sting, Adapter>,其中键是文件夹的路径,而Adapter是已填充的Adapter,它会像您可以使用的缓存。当您必须加载文件夹时,检查HashMap是否有一个以路径为键的条目,并使用Adapter,如果有,否则您从网络请求,并且您将填充Adapter中的HashMap

我会推荐这种方法,但这意味着即使您输入文件夹,也不会加载文件夹两次。这可能是你想要的,但不是在每种情况下。

另外,请查看Activity类的onBackPressed (),以便更轻松地处理后退键。