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

 更新时间:2016年11月09日 16:47:02   作者:cc杂货圈  
这篇文章主要为大家详细介绍了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); 

效果图:

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

相关文章

  • 获取Android界面性能数据的快捷方法

    获取Android界面性能数据的快捷方法

    这篇文章主要介绍了获取Android界面性能数据的快捷方法,帮助大家更好的理解和学习使用Android开发,感兴趣的朋友可以了解下
    2021-04-04
  • Android应用开发中数据的保存方式总结

    Android应用开发中数据的保存方式总结

    这篇文章主要介绍了Android应用开发中数据的保存方式总结,包括对ROM、SD卡、SharedPreference这三种方式实现的核心代码的精选,需要的朋友可以参考下
    2016-02-02
  • Android Studio中使用jni进行opencv开发的环境配置方法

    Android Studio中使用jni进行opencv开发的环境配置方法

    今天小编就为大家分享一篇Android Studio中使用jni进行opencv开发的环境配置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Android使用HttpURLConnection实现网络访问流程

    Android使用HttpURLConnection实现网络访问流程

    早些时候其实我们都习惯性使用HttpClient,但是后来Android6.0之后不再支持HttpClient,需要添加Apache的jar才行,所以,就有很多开发者放弃使用HttpClient了,HttpURLConnection毕竟是标准Java接口(java.net) ,适配性还是很强的
    2022-12-12
  • Android开发实现调节屏幕亮度功能

    Android开发实现调节屏幕亮度功能

    这篇文章主要介绍了Android开发实现调节屏幕亮度功能,涉及Android权限控制及屏幕亮度相关属性操作技巧,需要的朋友可以参考下
    2018-03-03
  • Android函数抽取壳的实现代码

    Android函数抽取壳的实现代码

    很早之前就想写这类的壳,最近终于把它做出来了,取名为dpt,下面把代码分享出来,对Android函数抽取壳的实现代码感兴趣的朋友一起看看吧
    2022-01-01
  • Kotlin ViewModelProvider.Factory的使用实例详解

    Kotlin ViewModelProvider.Factory的使用实例详解

    这篇文章主要介绍了Kotlin ViewModelProvider.Factory的使用,在我们使用 ViewModel 的时候,我们会发现,有的时候我们需要用到 ViewModelFactory,有的时候不需要
    2023-02-02
  • Android实现调用系统分享功能示例的总结

    Android实现调用系统分享功能示例的总结

    这篇文章主要介绍了通过Android调用系统分享文本信息、单张图片、多个文件和指定分享到微信、QQ,同时分享图片和文字的功能示例,小编觉得挺不错,一起跟随小编过来看看吧
    2018-05-05
  • Android OnCreate()中获取控件高度与宽度两种方法详解

    Android OnCreate()中获取控件高度与宽度两种方法详解

    这篇文章主要介绍了Android OnCreate()中获取控件高度与宽度两种方法详解的相关资料,这里提供了两种方法,大家可以都看下,需要的朋友可以参考下
    2016-12-12
  • Flutter路由之fluro的配置及跳转

    Flutter路由之fluro的配置及跳转

    本文主要介绍了Flutter路由之fluro的配置及跳转,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09

最新评论