zoukankan      html  css  js  c++  java
  • 【android】 浏览文件,如浏览sd卡下的图片文件

    http://leiwuluan.iteye.com/blog/1513167

    http://zhchzh1000.iteye.com/blog/763406

    一个上传图片的功能,需要对SD中的图片上传:

    file_row.xml

    <?xml version="1.0" encoding="utf-8"?>
    <TextView android:id="@+id/text1"
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />

    directory_list.xml

    <?xml version="1.0" encoding="utf-8"?>
    <TextView android:id="@+id/text1"
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />

    TestGrid.java

    import java.io.File;
    import java.io.FileFilter;
    import java.util.ArrayList;
    import java.util.List;
    
    import android.app.ListActivity;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.view.View;
    import android.widget.ListView;
    
    public class TestGrid   extends ListActivity {
     private static final FileFilter IMAGES_FILTER = new FileFilter() {
     
      public boolean accept(File f) {
       return f.isDirectory() || f.getName().matches("^.*?\\.(jpg|png|bmp|gif)$");
      }
     };
    
     private FileListAdapter fileList;
    
    
     public void onCreate(Bundle icicle) {
      super.onCreate(icicle);
      setContentView(R.layout.directory_list);
      fill(new File("/"));
     }
    
    
     public boolean onKeyDown(int keyCode, KeyEvent event) {
      if (keyCode == KeyEvent.KEYCODE_BACK && !fileList.isRoot()) {
       fill(fileList.getItem(1));
       return true;
      }
      return super.onKeyDown(keyCode, event);
     }
    
     private void fill(File folder) {
      List<File> files = new ArrayList<File>();
      files.add(folder);
      if (folder.getParentFile() != null)
       files.add(folder.getParentFile());
    
      for (File file : folder.listFiles(IMAGES_FILTER)) {
       files.add(file);
      }
    
      fileList = new FileListAdapter(this, R.layout.file_row, files);
      setListAdapter(fileList);
     }
    
     @Override
     protected void onListItemClick(ListView l, View v, int position, long id) {
      File file = fileList.getItem(position);
      if (file.isDirectory())
       fill(file);
      // TODO use image switcher to display selected images
     }
    }

    FileListAdapter.java

    import java.io.File;
    import java.util.List;
    
    import android.content.Context;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.TextView;
    
    public class FileListAdapter extends ArrayAdapter<File>{
    
     public FileListAdapter(Context context, int Resource,List<File> objects) {
      super(context,Resource,objects);
      // TODO Auto-generated constructor stub
     }
     
       @Override
       public View getView(int position, View convertView, ViewGroup parent) {
         TextView view = (TextView) super.getView(position, convertView, parent);
         File file = getItem(position);
         if (position == 0)
           view.setText(view.getResources().getString(R.string.current_folder) + file.getAbsolutePath());
         else if (position == 1 && !isRoot())
           view.setText(R.string.to_parent_folder);
         else
           view.setText(file.getName());
         return view;
       }
    
       public boolean isRoot() {
         return getItem(0).getParent() == null;
       }
    
     }
  • 相关阅读:
    Markdown的简介(转)
    写在二月的尾巴上
    The Pragmatic Programmer 读书笔记
    C/C++语言的一些精简归纳
    一般常用设计模式及原则的思想小结
    常用UML模型简要小结
    LeetCode 101. Symmetric Tree
    LeetCode 100. Same Tree
    LeetCode 99. Recover Binary Search Tree
    线索二叉树的建立与遍历
  • 原文地址:https://www.cnblogs.com/549294286/p/2628028.html
Copyright © 2011-2022 走看看