zoukankan      html  css  js  c++  java
  • 20169207 2016-2017-2《移动平台开发应用实践》第十三周作业

    android 文件管理器:
    功能列表:
    1: 实现了在ListView中浏览本地所有文件.
    2: 实现了对文件的增(新建文件夹)
    3: 删(删除文件或文件夹).
    4: 改(重命名以及复制粘贴文件).
    5: 查(对当前路径下的递归查询).
    6: 排(对显示在listView中的文件按时间,大小或文件名排序).
    整体思路:
    大概的思路是首先遍历本地所有文件的根目录,然后通过使用栈结构存储文件路径,因为出栈入栈的特性很适合处理随着用户操作不断推出存入的文件路径,之后增删改查的具体实现在下文都有详细解释以及缩略图,总共花费大概10个小时,也是完成了任务。
    实现原理:
    使用了栈结构保存当前的文件路径,每一次点击文件夹,就会把当前文件名推入栈组成新的文件路径。
    实现得到当前栈路径的方法:

    //得到当前栈路径的String  
    private String getPathString() {  
        Stack<String> temp = new Stack<>();  
        temp.addAll(nowPathStack);  
        String result = "";  
        while (temp.size() != 0) {  
            result = temp.pop() + result;  
        }  
        return result;  
    }  
    

    在item的onItemClick方法中将点击的文件名推入栈:

    //如果是文件夹  
    // 清除列表数据  
    // 获得目录中的内容,计入列表中  
    // 适配器通知数据集改变  
    nowPathStack.push("/" + file.getName());  
    showChangge(getPathString());  
    

    显示改变路径之后的listview文件列表:

    //显示改变data之后的文件数据列表  
    private void showChangge(String path) {  
        showtv.setText(path);  
        files = new File(path).listFiles();  
        data.clear();  
        for (File f : files) {  
            data.add(f);  
        }  
        files = fileAdapter.setfiledata(data);  
    }  
    

    实现原理:
    根据当前路径,以及通过dialog得到的用户输入的文件名执行新建文件夹的操作:

     
    /** 
     * 创建新文件夹 
     */  
    private void doCreateNewFolder() {  
        mydialog = new AlertDialog.Builder(MainActivity.this).create();  
        mydialog.show();  
        mydialog.getWindow().setContentView(R.layout.newfloder_dialog);  
        mydialog.setView(new EditText(MainActivity.this));  
        //加入下面两句以后即可弹出输入法  
        mydialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);  
        mydialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);  
        newfloder_name = (EditText) mydialog.getWindow().findViewById(R.id.newfloder_name);  
      
        mydialog.getWindow()  
                .findViewById(R.id.newfloder_cancle)  
                .setOnClickListener(new View.OnClickListener() {  
                    @Override  
                    public void onClick(View v) {  
                        mydialog.dismiss();  
                    }  
                });  
        mydialog.getWindow()  
                .findViewById(R.id.newfloder_create)  
                .setOnClickListener(new View.OnClickListener() {  
                    @Override  
                    public void onClick(View v) {  
                        String name =  newfloder_name.getText().toString();  
                        if (name != null) {  
                            File folder = new File(getPathString() + "/" + name);  
                            folder.mkdirs();  
                            if (folder.exists()) {  
                                Toast.makeText(MainActivity.this,"文件:"+name + " 创建成功",Toast.LENGTH_SHORT).show();  
                                showChangge(getPathString());  
                                mydialog.dismiss();  
                            }  
                        }  
      
                    }  
                });  
    }  
    

    这里是对其中部分功能的核心代码进行显示。

  • 相关阅读:
    开发了套三维光学扫描仪,可以技术转让
    见微知著 带你透过内存看 Slice 和 Array的异同
    Goland 这些技巧,学会开发效率翻倍!
    不懂汇编,也能看懂的 Go interface 原理分析
    win10创建删除文件文件夹需刷新才更新问题
    转载:java中DAO层、Service层、Control层的说明
    代码习惯
    查看网站的服务器和使用的技术
    flutter: CSS规则映射flutter控件-position
    android对话框透传Touch事件
  • 原文地址:https://www.cnblogs.com/littletang/p/6902370.html
Copyright © 2011-2022 走看看