diff --git a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileAdapter.java b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileAdapter.java index 8c4aa66..379729e 100644 --- a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileAdapter.java +++ b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileAdapter.java @@ -1,9 +1,6 @@ package com.thankvinci.CloudKey.Files; -import android.app.Activity; import android.os.Bundle; -import android.os.Handler; -import android.os.Message; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -12,14 +9,12 @@ import android.widget.TextView; import android.widget.Toast; import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentTransaction; import androidx.navigation.Navigation; import androidx.recyclerview.widget.RecyclerView; import com.thankvinci.CloudKey.Fragment.FileManageFragment; import com.thankvinci.CloudKey.R; -import java.io.File; import java.util.List; public class FileAdapter extends RecyclerView.Adapter { @@ -40,16 +35,6 @@ public class FileAdapter extends RecyclerView.Adapter { name = file.findViewById(R.id.file_name); } } - public static FileAdapter getInstance(List fileList,Fragment fragment){ - if(adapter != null){ - return adapter; - } - adapter = new FileAdapter(fileList,fragment); - return adapter; - } - public void setFileList(List fileList){ - this.fileList = fileList; - } public FileAdapter(List fileList,Fragment fragment){ this.fileList = fileList; this.fragment = fragment; @@ -65,14 +50,16 @@ public class FileAdapter extends RecyclerView.Adapter { public void onClick(View v){ int position = holder.getAdapterPosition(); FileItem fitem = fileList.get(position); - Toast.makeText(v.getContext(),fitem.getName(),Toast.LENGTH_SHORT).show(); + //Toast.makeText(v.getContext(),fitem.getName(),Toast.LENGTH_SHORT).show(); if(fitem.isDir()){ StringBuilder builder = new StringBuilder(); builder.append(((FileManageFragment)fragment).getDir()); + builder.append("/"); builder.append(fitem.getName()); data.putString("dir",builder.toString()); data.putBoolean("isRoot",false); + Toast.makeText(v.getContext(),data.getString("dir"),Toast.LENGTH_SHORT).show(); Navigation.findNavController(v).navigate(R.id.action_openDir,data); }else{ Toast.makeText(v.getContext(),"没有打开除文件夹和压缩包以外的功能",Toast.LENGTH_SHORT).show(); diff --git a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileItem.java b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileItem.java index bfb655e..b51f742 100644 --- a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileItem.java +++ b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Files/FileItem.java @@ -32,4 +32,7 @@ public class FileItem { public boolean isDir(){ return !type; } + public boolean isZip(){ + return isZip; + } } diff --git a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/FileManageFragment.java b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/FileManageFragment.java index e1738b6..3dda163 100644 --- a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/FileManageFragment.java +++ b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/FileManageFragment.java @@ -33,7 +33,6 @@ public class FileManageFragment extends Fragment { private EditText path_edit; private RecyclerView directoryView; private List fileItemList; - private String fileNames[]; private File files[]; public FileManageFragment(){ @@ -47,52 +46,26 @@ public class FileManageFragment extends Fragment { directoryView = (RecyclerView)getView().findViewById(R.id.dir_list); Bundle data = getArguments(); - dir = data.getString("dir"); isRoot = data.getBoolean("isRoot"); - Toast.makeText(getActivity(),dir+isRoot,Toast.LENGTH_SHORT).show(); + if(isRoot){ - loadRoot(); + //Toast.makeText(getActivity(),"root",Toast.LENGTH_SHORT).show(); + dir = Environment.getExternalStorageDirectory().getPath(); //获取根目录 }else{ - loadDirectory(dir); + dir = data.getString("dir"); + Toast.makeText(getActivity(),dir,Toast.LENGTH_SHORT).show(); } - initLayout(); + loadDirectory(); } public String getDir(){ return dir; } - private void initLayout(){ - StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(4,StaggeredGridLayoutManager.VERTICAL); - directoryView.setLayoutManager(layoutManager); - FileAdapter adapter = FileAdapter.getInstance(fileItemList,this); - adapter.setFileList(fileItemList); - directoryView.setAdapter(adapter); - } - private void loadRoot() { - //加载外部存储的根目录 + public void loadDirectory(){ ActivityCompat.requestPermissions(getActivity(), new String[]{ //运行时权限 "android.permission.WRITE_EXTERNAL_STORAGE", "android.permission.READ_EXTERNAL_STORAGE"}, 1); - - String rootPath = Environment.getExternalStorageDirectory().getPath(); - dir = rootPath; path_edit.setText(dir); - File root = new File(rootPath); - files = root.listFiles(); - if (files == null){ - //当目录里为空时,列表为空对象 - }else{ - FileUtils.orderByName(files); - - initDirectory(); - } - - } - public void loadDirectory(String path){ - ActivityCompat.requestPermissions(getActivity(), new String[]{ //运行时权限 - "android.permission.WRITE_EXTERNAL_STORAGE", - "android.permission.READ_EXTERNAL_STORAGE"}, 1); - path_edit.setText(path); - File directory = new File(path); + File directory = new File(dir); files = directory.listFiles(); if (files == null){ //当目录里为空时,列表为空对象 @@ -100,7 +73,7 @@ public class FileManageFragment extends Fragment { FileUtils.orderByName(files); initDirectory(); } - Toast.makeText(getActivity(),directory.canRead()+"",Toast.LENGTH_SHORT).show(); + initLayout(); } private void initDirectory(){ fileItemList = null; @@ -133,4 +106,10 @@ public class FileManageFragment extends Fragment { } } } + private void initLayout(){ + StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(4,StaggeredGridLayoutManager.VERTICAL); + directoryView.setLayoutManager(layoutManager); + FileAdapter adapter = new FileAdapter(fileItemList,this); + directoryView.setAdapter(adapter); + } } diff --git a/开发历程.md b/开发历程.md index bad45dd..584363c 100644 --- a/开发历程.md +++ b/开发历程.md @@ -219,5 +219,8 @@ public static final View.OnClickListener createNavigateOnClickListener(@IdRes in 返回一个OnClickListener,但是我是分文件和目录的,这个方法又不能重写,然后又找到了https://blog.csdn.net/m0_46962786/article/details/109119746这篇文章,这里面是在普通的OnClickListener中获取当前的Navigation的controller,然后调用navigate()方法去触发action和传递参数 +**2021/6/9** +将loadRoot和loadDirectory两个方法合并为loadDirectory(),本质上都是加载一个目录 +发现不管怎么加载都是根目录的内容,随后发现是之前的一个错误想法:在当前的fragment刷新布局,然后原来的布局压栈,虽然找到了navigation的方法,但是为了节约资源将FileAdapter设置为单例模式没有改回来. \ No newline at end of file