所以我创建了一个浏览在线文件和文件夹的应用程序,它使用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;
}
答案 0 :(得分:1)
如果用户输入目录,您可以创建一个存储当前适配器的ArrayList<Adapter>
,如果用户想要上一个目录,则弹出一个并使用它。这样,您甚至不必在按下后面时使用Adapter
构建ListView
,只需设置它即可。
替代方式可能会更好,如果您创建HashMap<Sting, Adapter>
,其中键是文件夹的路径,而Adapter
是已填充的Adapter
,它会像您可以使用的缓存。当您必须加载文件夹时,检查HashMap
是否有一个以路径为键的条目,并使用Adapter
,如果有,否则您从网络请求,并且您将填充Adapter
中的HashMap
。
我会推荐这种方法,但这意味着即使您输入文件夹,也不会加载文件夹两次。这可能是你想要的,但不是在每种情况下。
另外,请查看Activity类的onBackPressed ()
,以便更轻松地处理后退键。