首页 > 系统 > Android > 正文

Android编写文件浏览器的实现方法

2020-02-21 17:29:42
字体:
来源:转载
供稿:网友

我们在编写程序的时候,会需要浏览一些文件,但应用本身并不是与文件管理相关的应用,可能只是一个功能,需要让用户选择文件进行后续操作,那么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编写文件浏览器的实现方法大家学习的怎样呢?我们要在有时间的时候充电学习,这样我们在遇到这个问题的时候,才不至于手足无措。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表