Android编写文件浏览器简单实现

有时候我们保存文件总会用到文件浏览器功能.那么今天博主带大家做一个。

那么开始,浏览文件,我们就需要写一个文件工具类。

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; 

import android.util.Log; 

public class FileUtils {
  /**
   * 获取当前目录下的所有文件或文件夹
   * @param path 路径
   * @return
   */
  public static List<Map<String,Object>> GetPathFilsList(String path) {
    List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
    List<Map<String,Object>> filelist = new ArrayList<Map<String,Object>>();
    try {
      String[] Files = new File(path).list();
      for(String file : Files){
        Map<String, Object> map = new HashMap<String, Object>();
        if(new File(path+file).isDirectory()){
          map.put("isDirectory",2);
          map.put("fileName", file); 

          list.add(map);
        }else {
          map.put("isDirectory", 1);
          map.put("fileName", file); 

          filelist.add(map);
        } 

      }
      list.addAll(filelist);
      return list;
    } catch (Exception e) {
      // TODO: handle exception
      e.printStackTrace();
      return null;
    }
  }
}

这里会将文件和文件夹区分出来,便于显示区分。

之后我们需要用到一个适配器,用于显示这些数据的ListView

private class FileBrowserAdapter extends BaseAdapter{
    private List<Map<String, Object>> fileList;
    private Context context; 

    public FileBrowserAdapter(Context Context,
        List<Map<String, Object>> fileList) {
      this.fileList = fileList;
      this.context = context;
    } 

    @Override
    public int getCount() {
      return fileList == null ? 0 : fileList.size();
    } 

    @Override
    public Object getItem(int position) {
      return fileList.get(position);
    } 

    @Override
    public long getItemId(int position) {
      return position;
    } 

    @SuppressLint("InflateParams")
    @Override
    public View getView(int position, View convertView, ViewGroup parent) { 

      LayoutInflater mInflater = LayoutInflater
          .from(getApplicationContext());
      View view = null;
      view = mInflater.inflate(R.layout.file_list_item, null);
      ImageView image = (ImageView) view
          .findViewById(R.id.file_list_item_image);
      if (Integer
          .parseInt(fileList.get(position).get("isDirectory") + "") == 2)
        image.setImageResource(R.drawable.folder);
      else if (Integer.parseInt(fileList.get(position).get("isDirectory")
          + "") == 1)
        image.setImageResource(R.drawable.documents);
      TextView textView = (TextView) view
          .findViewById(R.id.file_list_item_testview);
      textView.setTextColor(Color.BLACK);
      textView.setText(fileList.get(position).get("fileName") + "");
      return view; 

    } 

  }

最后我们需要实现这些

dir = Environment.getExternalStorageDirectory()
        .getAbsolutePath() + "/";
    fileListView = (ListView) findViewById(R.id.file_listview);
    listItemClickListener = new FileListItemClickListener();
//   //设置点击事件
    fileListView.setOnItemClickListener(listItemClickListener);
    fileList = FileUtils.GetPathFilsList(dir);
    if (new File(dir).getParent() != null) {
      Map<String, Object> map = new HashMap<String, Object>();
      map.put("isDirectory", 0);
      map.put("fileName", new File(dir).getParent());
      fileList.add(0, map); 

    }
    FileBrowserAdapter phoneFileBrowserAdapter = new FileBrowserAdapter(
        getApplicationContext(), fileList);
    fileListView.setAdapter(phoneFileBrowserAdapter);

效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 微信浏览器弹出框滑动时页面跟着滑动的实现代码(兼容Android和IOS端)

    在做微信开发的时候遇到这个问题:微信浏览器弹出框滑动时页面跟着滑动. 我觉得这个问题用的是下面这几行代码: var $body = $('body'), dialogIsInView = !1,//当前是不是对话框 lastContentContainerScrollTop = -1,//用于弹出框禁止内容滚动 $contentContainer = $('#content-container');//内容容器 //阻止Window滚动 function stopWindowScroll() {

  • 微信或手机浏览器在线显示office文件(已测试ios、android)

    最近开发微信企业号,发现微信andriod版内置浏览器在打开文件方面有问题,但是ios版没有问题,原因是ios版使用的是safari浏览器 支持文档直接打开,但是andriod版使用的是腾讯浏览器x5内核,不知道什么原因不支持,可能是集成出现的问题,这里提供解决方法,这种方法也同样适用手机浏览器或者安卓开发.通过此方法可以在微信上开发自己的第三方应用,或者解决自己的项目问题,解决方法及核心代码如下: 1.判断浏览器类型 HttpServletRequest req = ServletAction

  • Docker 实现浏览器里开发Android应用的功能

    在浏览器里开发Android应用          这里需要用到Docker的知识, Che 发布后对Android应用开发多了一个工具,这里就对如何实现该功能就行详细介绍: Eclipse Che 最近Che发布了正式版,那我就介绍下在Che上开发Android吧-- 使用Che需要懂得一些Docker的知识,只需要一点点即可,因为Che是基于Docker的,所以了解Docker有助于理解Che的工作方式. 不废话,教程只有四步,开始. 第一步:部署docker服务器 我选择的是digital

  • Android 开发 使用WebUploader解决安卓微信浏览器上传图片中遇到的bug

    先给大家分析下微信浏览器上传图片bug的原因 微信在新版本中采用的是自己的X5内核浏览器,而在较老的版本中还有可能是安卓的原生浏览器.具体的环境我也不太了解,但是经过实际多台安卓机型的测试,我采取的方案可以基本确保在安卓机中微信浏览器的成功上传.苹果机型没问题,因为微信的ios客户端使用的是Safari的内核,没有各种坑,且效果最好. 这里给出一个 WebUploader 官方关于移动端适配的 issues 链接.里面提供的方法确实有效,但就是解决的方案并没有很清楚的展示出来,从该issues中

  • Android调用系统自带浏览器打开网页的实现方法

    在Android中可以调用自带的浏览器,或者指定一个浏览器来打开一个链接.只需要传入一个uri,可以是链接地址. 启动android默认浏览器 在Android程序中我们可以通过发送隐式Intent来启动系统默认的浏览器.如果手机本身安装了多个浏览器而又没有设置默认浏览器的话,系统将让用户选择使用哪个浏览器来打开连接. Uri uri = Uri.parse("https://www.baidu.com"); Intent intent = new Intent(Intent.ACTI

  • Android 手机浏览器调试使用Chrome进行调试实例详解

    使用PC上的 Chrome 远程调试手机端的页面 工具准备 手机端:chrome for Android,: PC端:安装谷歌浏览器(最好是最新版的开发者版本) USB 连接线, 也就是你充电器的那条线 开启调试模式 使用 USB 连接你的电脑,并开启调试模式. 使用 Android 4.2 或以上的手机可能没有调试模式选项,可以找到 "设置 > 关于手机 > 版本号(Build Number)", 点 7 次,然后返回开发者选项就可以了. 查找 USB 设备 (Enabl

  • Android开发之浏览器用法实例详解(调用uc,opera,qq浏览器访问网页)

    本文实例讲述了Android开发之浏览器用法.分享给大家供大家参考,具体如下: 一.启动android默认浏览器 Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); Uri content_url = Uri.parse("http://www.jb51.net"); intent.setData(content_url); startActivity(inten

  • Android编写文件浏览器简单实现

    有时候我们保存文件总会用到文件浏览器功能.那么今天博主带大家做一个. 那么开始,浏览文件,我们就需要写一个文件工具类. import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.util.Log; public class FileUtils { /** * 获取当前目录下的所有文件或文

  • Android中调用系统的文件浏览器及自制简单的文件浏览器

    调用系统自带的文件浏览器 这很简单: /** 调用文件选择软件来选择文件 **/ private void showFileChooser() { intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("*/*"); intent.addCategory(Intent.CATEGORY_OPENABLE); try { startActivityForResult(Intent.createChooser(inte

  • Android编程实现简单文件浏览器功能

    本文实例讲述了Android编程实现简单文件浏览器功能.分享给大家供大家参考,具体如下: 运行效果: 布局: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:lay

  • Android编写简单的网络爬虫

    一.网络爬虫的基本知识 网络爬虫通过遍历互联网络,把网络中的相关网页全部抓取过来,这体现了爬的概念.爬虫如何遍历网络呢,互联网可以看做是一张大图,每个页面看做其中的一个节点,页面的连接看做是有向边.图的遍历方式分为宽度遍历和深度遍历,但是深度遍历可能会在深度上过深的遍历或者陷入黑洞.所以,大多数爬虫不采用这种形式.另一方面,爬虫在按照宽度优先遍历的方式时候,会给待遍历的网页赋予一定优先级,这种叫做带偏好的遍历. 实际的爬虫是从一系列的种子链接开始.种子链接是起始节点,种子页面的超链接指向的页面是

  • Android基于Flutter编写文件下载管理器

    目录 前言 Dio 的下载方法 download 监测下载进度 取消下载 删除已经下载的文件 调试过程中遇到的一些错误 运行结果及代码 总结 前言 文件下载在很多类型的应用中会涉及,例如音乐.文档.包括图片(只是图片可以使用一些组件完成无感知的下载).本篇介绍使用 Dio 的下载方法完成文件的下载,涉及到的内容如下: Dio 插件的 download 方法介绍: 使用 download 的回调方法监测下载进度: 使用 CancelToken 取消正在下载的任务: 删除已下载的文件: path_p

  • Python编程之gui程序实现简单文件浏览器代码

    本文主要分享了关于在python中实现一个简单的文件浏览器的代码示例,代码及展示如下. #!/usr/bin/env python # -*- coding: UTF-8 -*- import os from time import sleep from Tkinter import * class DirList(object): def __init__(self, initdir=None): '''构造函数,说明版本信息''' self.top = Tk() self.label = L

  • PHP实现的文件浏览器功能简单示例

    本文实例讲述了PHP实现的文件浏览器功能.分享给大家供大家参考,具体如下: <?php if(isset($_GET['path'])){ echo $path = $_SERVER['DOCUMENT_ROOT'].$_GET['path']; $pre_path = $_GET['path']; }else{ echo $path = $_SERVER['DOCUMENT_ROOT']; $pre_path = ""; } ?> <html> <hea

  • Android 游戏开发入门简单示例

    在Android系统上开发游戏是Android开发学习者所向往的,有成就感也有乐趣,还能取得经济上的报酬.那怎样开发Android游戏呢?下面介绍一个简单的入门实例.        一.创建新工程 首先,我们在Eclipse中新建一个名为Movement的工程,并且选择合适的Android SDK,在这里,我们选用的API是比较低的1.5版本,这样可以让其适应性更强.接下来,我们新建两个类,一个是UpdateThread类,一个是SurfaceView类,它们在项目中分别是负责处理线程和画面的两

  • Android自定义 WebView浏览器

    WebView是Android中一个非常实用的组件,它和Safai.Chrome一样都是基于Webkit网页渲染引擎,可以通过加载HTML数据的方式便捷地展现软件的界面. 在布局文件中添加<EditText/>和<Button/>控件, 在布局文件中添加<WebView/>控件 在Activity中获取WebView对象 调用WebView对象的loadUrl()方法,参数:String路径 添加访问网络的权限android.permission.INTERNET 调用

  • 详解安卓系统中的Android.mk文件

    概述     Android.mk文件用来向编译系统描述如何编译你的源代码.更确切地说,该文件其实就是一个小型的Makefile.由于该文件会被NDK的编译工具解析多次,因此应该尽量减少源码中声明变量,因为这些变量可能会被多次定义从而影响到后面的解析.这个文件的语法允许把源代码组织成模块,每个模块属于下列类型之一: APK程序:一般的Android程序,编译打包生成apk文件.     JAVA库:java类库,编译打包生成jar包文件.     C\C++应用程序:可执行的C/C++应用程序.

随机推荐