Android编写文件浏览器简单实现
程序员文章站
2024-03-01 16:44:16
有时候我们保存文件总会用到文件浏览器功能.那么今天博主带大家做一个。
那么开始,浏览文件,我们就需要写一个文件工具类。
import java.io.fil...
有时候我们保存文件总会用到文件浏览器功能.那么今天博主带大家做一个。
那么开始,浏览文件,我们就需要写一个文件工具类。
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手机号注册、绑定手机号获取短信验证码实例
下一篇: python自定义异常实例详解