• Android手机文件管理


    MyAdapter.java
     1 package com.testview;
     2 
     3 import java.util.List;
     4 import java.util.Map;
     5 
     6 import android.content.Context;
     7 import android.graphics.Color;
     8 import android.view.LayoutInflater;
     9 import android.view.View;
    10 import android.view.ViewGroup;
    11 import android.widget.BaseAdapter;
    12 import android.widget.TextView;
    13 
    14 public class MyAdapter extends BaseAdapter {
    15     private LayoutInflater mInflater;
    16     private List<Map<String, Object>>mData ;
    17     private int  selectItem=-1;
    18     private int[] layout;
    19     public MyAdapter(Context context, List<Map<String, Object>>mData, int[] layout) {
    20      this.mInflater = LayoutInflater.from(context);
    21      this.mData = mData;
    22      this.layout = layout;
    23     }
    24     public int getCount() {
    25      return mData.size();
    26     }
    27     public Object getItem(int arg0) {
    28      return mData.get(arg0);
    29     }
    30     public long getItemId(int arg0) {
    31      return arg0;
    32     }
    33     public View getView(int position, View convertView, ViewGroup parent) {
    34      ViewHolder holder = null;
    35      if (convertView == null) {
    36       holder = new ViewHolder();
    37       convertView = mInflater.inflate(layout[0], null);
    38       holder.titleText = (TextView) convertView.findViewById(layout[1]);
    39       holder.infoText = (TextView) convertView.findViewById(layout[2]);
    40       
    41       convertView.setTag(holder);   
    42      } else {
    43       holder = (ViewHolder) convertView.getTag();
    44      }
    45      holder.titleText.setText((String) mData.get(position).get("title"));
    46      holder.infoText.setText((String) mData.get(position).get("info"));   
    47      
    48      if (position == selectItem) {
    49       convertView.setBackgroundColor(0xaeefcc00);
    50      } 
    51      else {
    52          convertView.setBackgroundColor(Color.BLACK);
    53      }
    54      convertView.getBackground().setAlpha(20);//0~255透明度值
    55      return convertView;
    56     }
    57     public  void setSelectItem(int selectItem) {
    58       this.selectItem = selectItem;
    59     }
    60 
    61 }
    TestListViewActivity .java
      1 package com.testview;
      2 
      3 import java.io.File;
      4 import java.util.ArrayList;
      5 import java.util.Arrays;
      6 import java.util.HashMap;
      7 import java.util.List;
      8 import java.util.Map;
      9 import com.util.SDUtil;
     10 import android.app.Activity;
     11 import android.app.AlertDialog;
     12 import android.os.Bundle;
     13 import android.os.Environment;
     14 import android.view.KeyEvent;
     15 import android.view.View;
     16 import android.view.View.OnClickListener;
     17 import android.widget.AdapterView;
     18 import android.widget.EditText;
     19 import android.widget.ImageButton;
     20 import android.widget.ListView;
     21 
     22 public class TestListViewActivity extends Activity {
     23     /**
     24      * 数据存储
     25      */
     26     private List<Map<String, Object>> mData;
     27     
     28     /**
     29      * 当前访问路径
     30      */
     31     private String currentPath = "/sdcard";
     32     
     33     private ListView setlistViewLeft;
     34     /**
     35      * 自定义数据适配器
     36      */
     37     private MyAdapter adapter;
     38     
     39     /**
     40      * 文件名称
     41      */
     42     private String[] fileNames = null;
     43     
     44     /**
     45      * 文件路径
     46      */
     47     private String[] filePaths = null;
     48     
     49     private EditText editText;
     50     private ImageButton imageBtn;
     51     
     52     private int[] layout = {
     53             R.layout.listinfo, 
     54             R.id.titleleftlist, 
     55             R.id.infoleftlist
     56             };
     57     
     58     @Override
     59     public void onCreate(Bundle savedInstanceState) {
     60      super.onCreate(savedInstanceState);
     61      setContentView(R.layout.main);
     62      setTitle("文件总数:"+getSDCardMassage(currentPath)+"\n"+"当前路径:"+currentPath);
     63      getSearchKey();
     64      mData = getListItems();  
     65      setlistViewLeft = (ListView)findViewById(R.id.listleft); 
     66      adapter = new MyAdapter(this, mData, layout);
     67      setlistViewLeft.setAdapter(adapter);
     68      setlistViewLeft.setOnItemClickListener(mLeftListOnItemClick);
     69     }
     70     
     71     /**
     72      * 初始化数据
     73      */
     74     public void getSearchKey(){
     75         editText = (EditText) findViewById(R.id.entry);
     76         imageBtn = (ImageButton) findViewById(R.id.btn_imageButton);
     77         imageBtn.setOnClickListener(new OnClickListener() {
     78             
     79             @Override
     80             public void onClick(View v) {
     81                 String searchKey = editText.getText().toString();
     82                 if(searchKey == null || "".equals(searchKey)){
     83                     return;
     84                 }
     85                 int length = fileNames.length;
     86                 String[] strKeyName = {};
     87                 String[] strKeyPath = {};
     88                 for(int i = 0; i < length; i++){
     89                     String name = fileNames[i];
     90                     if(name.contains(searchKey)){
     91                         strKeyName = Arrays.copyOf(strKeyName, strKeyName.length+1);
     92                         strKeyPath = Arrays.copyOf(strKeyPath, strKeyPath.length+1);
     93                         strKeyName[strKeyName.length-1] = name;
     94                         strKeyPath[strKeyPath.length-1] = filePaths[i];
     95                     }
     96                 }
     97                 if(strKeyName.length > 0){
     98                     //初始化数据
     99                     setSearchKeyData(strKeyName, strKeyPath);
    100                     
    101                 }else{
    102                 new AlertDialog.Builder(TestListViewActivity.this)
    103                      .setTitle("消息")
    104                      .setMessage("文件不存在")
    105                      .setPositiveButton("确定", null)
    106                      .show();
    107                 }
    108             }
    109 
    110             
    111         });
    112     }
    113     
    114     /**
    115      * 初始化搜索数据
    116      * @param strKeyName
    117      * @param strKeyPath
    118      */
    119     private void setSearchKeyData(String[] strKeyName, String[] strKeyPath) {
    120         fileNames = strKeyName;
    121         filePaths = strKeyPath;
    122         mData = getListItems();
    123         setTitle("文件总数:"+strKeyName.length+"\n"+"当前路径:"+currentPath);
    124         initAdapter();
    125     }
    126     
    127     /**
    128      * 初始化数据
    129      * @param path 文件路径
    130      */
    131     public void initData(String path){
    132         currentPath = path;
    133         setTitle("文件总数:"+getSDCardMassage(path)+" "+currentPath);
    134         mData = getListItems();
    135         editText.setText(null);
    136         initAdapter();
    137     }
    138     
    139     public void initAdapter(){
    140         setlistViewLeft = (ListView)findViewById(R.id.listleft);
    141         adapter = new MyAdapter(this, mData, layout);
    142         setlistViewLeft.setAdapter(adapter);
    143         setlistViewLeft.setOnItemClickListener(mLeftListOnItemClick);
    144     }
    145     
    146     private List<Map<String,Object>> getListItems(){
    147         List<Map<String,Object>> listItems = new ArrayList<Map<String,Object>>();
    148         for(int i=0;i<fileNames.length;i++){
    149          Map<String,Object> map = new HashMap<String, Object>();
    150          map.put("title", "文件名称");
    151          map.put("info", fileNames[i]);
    152          listItems.add(map);
    153         }
    154         return listItems;
    155        }
    156     
    157     AdapterView.OnItemClickListener mLeftListOnItemClick = new AdapterView.OnItemClickListener() {
    158 
    159         @Override
    160         public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    161                 long arg3) {
    162             
    163             adapter.setSelectItem(arg2);
    164             adapter.notifyDataSetInvalidated();
    165             String v2 = mData.get(arg2).get("info").toString();
    166             String str = filePaths[arg2];
    167             if(str != null){
    168                 //重新初始化界面
    169                 mData.clear();
    170                 currentPath = str;
    171                 initData(str);
    172             }else{
    173                 SDUtil.openFile(TestListViewActivity.this,  currentPath+"/"+v2);
    174             }
    175             
    176         }
    177         
    178        };
    179     /**
    180      * 重写手机返回键事件  
    181      */
    182        public boolean onKeyDown(int keyCode, android.view.KeyEvent event) {
    183         if(keyCode == KeyEvent.KEYCODE_BACK ){
    184              back();
    185              return true;
    186         }
    187         return super.onKeyDown(keyCode, event);
    188      };
    189     
    190     /**
    191      * 返回数据初始化
    192      */
    193     private void back() {
    194         String path = new File(currentPath).getParentFile().getPath();
    195         if("/sdcard".equals(currentPath)){
    196             finish();
    197             return;
    198         }
    199         initData(path);
    200     }
    201     
    202     /**
    203      * 获取SD卡文件
    204      * @param path
    205      * @return
    206      */
    207     public int getSDCardMassage(String path){
    208              boolean flag = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
    209              if(flag){
    210                  if(SDUtil.isExistFiles(path)){
    211                      File f = new File(path);
    212                      File[] files = f.listFiles();
    213                      int size = files.length;
    214                      fileNames = new String[size];
    215                      filePaths = new String[size];
    216                      for(int i = 0; i < size; i++ ){
    217                          File exitFile = files[i];
    218                          if(exitFile.exists()){
    219                              fileNames[i] = exitFile.getName();
    220                              if(SDUtil.isExistFiles(exitFile.getAbsolutePath()))
    221                                  filePaths[i] = exitFile.getAbsolutePath();
    222                              else 
    223                                  filePaths[i] = null;
    224                          }
    225                      }
    226                      return size;
    227                  }
    228              }
    229              return 0;
    230          }
    231 }
    main.xml
     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="fill_parent"
     4     android:layout_height="fill_parent"
     5     android:orientation="vertical" >
     6     <RelativeLayout 
     7          android:layout_width="fill_parent"
     8          android:layout_height="wrap_content"
     9          android:background="@color/search_bg_color"
    10          >
    11          <EditText 
    12                 android:id="@+id/entry" 
    13                android:layout_width="wrap_content" 
    14             android:layout_height="wrap_content" 
    15             android:background="@android:drawable/editbox_background" 
    16             android:width="285dp"
    17             android:height="35dp"
    18             android:layout_marginTop="3dp"
    19             />
    20         <ImageButton
    21             android:id="@+id/btn_imageButton" 
    22             android:layout_width="fill_parent"
    23              android:layout_height="wrap_content"
    24              android:text="@string/search_btn"
    25              android:background="@drawable/search_image2"
    26              android:layout_alignTop="@id/entry"
    27             android:layout_toRightOf="@id/entry"
    28             android:layout_marginTop="3dp"
    29               />
    30     </RelativeLayout>
    31     <ListView 
    32         android:id="@+id/listleft"
    33         android:layout_width="fill_parent"
    34         android:layout_height="wrap_content">
    35     </ListView>
    36 </LinearLayout>
    listinfo.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        
        <TextView
            android:id="@+id/titleleftlist"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            
             />
        <TextView
            android:id="@+id/infoleftlist"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
             
             />
    </LinearLayout>

     界面展示如下:

  • 相关阅读:
    Linux Virtual Server技术
    log4j+slf4j迁移到log4j2+slf4j (Servlet3.0)
    Android控件ToggleButton的使用方法
    Redis学习手冊(事务)
    游戏server之server优化思路
    Codeforces 474D Flowers (线性dp 找规律)
    【C语言】编写函数实现库函数atof
    unity3D游戏开发实战原创视频讲座系列7之消消乐游戏开发
    [WebGL入门]二十一,从平行光源发出的光
    TwoSum leetcode
  • 原文地址:https://www.cnblogs.com/FCWORLD/p/2729949.html
Copyright © 2020-2023  润新知