当前位置: 移动技术网 > 移动技术>移动开发>Android > Android编写文件浏览器简单实现

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

2019年07月24日  | 移动技术网移动技术  | 我要评论

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

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

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); 

效果图:

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网