13号星期五游戏750t开i:Android ListActivity实现遍历文件列表,查看文档类文件

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 23:12:48
Java代码  
  1. package com.shawn.zp.reader.activity;   
  2.   
  3. import java.io.File;   
  4. import java.io.FileFilter;   
  5. import java.text.DecimalFormat;   
  6. import java.util.ArrayList;   
  7. import java.util.List;   
  8.   
  9. import android.app.ListActivity;   
  10. import android.content.Context;   
  11. import android.os.Bundle;   
  12. import android.view.KeyEvent;   
  13. import android.view.LayoutInflater;   
  14. import android.view.View;   
  15. import android.view.ViewGroup;   
  16. import android.widget.ArrayAdapter;   
  17. import android.widget.ListView;   
  18. import android.widget.TextView;   
  19.   
  20. public class AddBookActivity extends ListActivity{   
  21.     private TextView currentFolder;     //当前文件夹   
  22.        
  23.     private FileListAdapter fileList;   
  24.        
  25.     //文件过滤器,查找文件夹或文本文件   
  26.     private static final FileFilter BOOKS_FILTER = new FileFilter() {   
  27.         public boolean accept(File f) {   
  28.             return f.isDirectory() || f.getName().toLowerCase().matches("^.*?\\.(txt|text)$");   
  29.         }   
  30.     };   
  31.   
  32.     public void onCreate(Bundle savedInstanceState) {   
  33.         super.onCreate(savedInstanceState);   
  34.         setContentView(R.layout.layout_addbook_directory);   
  35.         currentFolder = (TextView)findViewById(R.id.addbook_current_folder);   
  36.         fill(new File("/"));   
  37.     }   
  38.   
  39.     public boolean onKeyDown(int keyCode, KeyEvent event) {   
  40.         if (keyCode == KeyEvent.KEYCODE_BACK && !fileList.isRoot) {   
  41.             fill(fileList.getItem(0));   
  42.             return true;   
  43.         }   
  44.         return super.onKeyDown(keyCode, event);   
  45.     }   
  46.     @Override  
  47.     protected void onListItemClick(ListView l, View v, int position, long id) {   
  48.         File file = fileList.getItem(position);   
  49.         if (file.isDirectory())   
  50.             fill(file);   
  51.     }   
  52.     //跳转目录   
  53.     private void fill(File folder) {   
  54.         boolean isRoot = folder.getParent() == null;   
  55.         currentFolder.setText(AddBookActivity.this.getResources().getString(R.string.addbook_current_folder) + folder.getAbsolutePath());   
  56.         List files = new ArrayList();   
  57.         if (!isRoot)   
  58.             files.add(folder.getParentFile());   
  59.         File[] filterFiles = folder.listFiles(BOOKS_FILTER);   
  60.         if(null != filterFiles && filterFiles.length>0) {   
  61.             for (File file : filterFiles) {   
  62.                 files.add(file);   
  63.             }   
  64.         }   
  65.         fileList = new FileListAdapter(this, R.layout.layout_addbook_file, files, isRoot);   
  66.         setListAdapter(fileList);   
  67.     }   
  68. }   
  69.   
  70. //文件列表适配器   
  71. class FileListAdapter extends ArrayAdapter{   
  72.     private LayoutInflater mInflater;   
  73.     boolean isRoot;     //根目录   
  74.        
  75.     public FileListAdapter(Context context, int Resource, List objects, boolean isRoot) {   
  76.         super(context,Resource,objects);   
  77.         this.isRoot = isRoot;   
  78.         this.mInflater = LayoutInflater.from(context);   
  79.     }   
  80.     
  81.     @Override  
  82.     public View getView(int position, View convertView, ViewGroup parent) {   
  83.         convertView = mInflater.inflate(R.layout.layout_addbook_file, null);   
  84.         TextView title = (TextView)convertView.findViewById(R.id.addbook_title);   
  85.         TextView info = (TextView)convertView.findViewById(R.id.addbook_info);   
  86.   
  87.         File file = getItem(position);   
  88.         if (position == 0 && !isRoot)   
  89.             title.setText(R.string.addbook_parent_folder);   
  90.         else {   
  91.             title.setText(file.getName());   
  92.             if (file.isDirectory())   
  93.                 info.setText(R.string.addbook_directory);   
  94.             else {   
  95.                 long fileSize = file.length();   
  96.                 if(fileSize >= 1024*1024) {   
  97.                     float size = fileSize/(1024f*1024f);   
  98.                     info.setText(new DecimalFormat("#.00").format(size) + "MB");   
  99.                 }else if(fileSize >= 1024) {   
  100.                     float size = fileSize/1024f;   
  101.                     info.setText(new DecimalFormat("#.00").format(size) + "KB");   
  102.                 }else {   
  103.                     info.setText(fileSize + "B");   
  104.                 }   
  105.             }   
  106.         }   
  107.         return convertView;   
  108.     }   
  109. }  


Java代码  
  1.   
  2.     android:orientation="vertical"  
  3.     android:layout_width="fill_parent"    
  4.     android:layout_height="fill_parent"  
  5.     android:paddingLeft="8dip"  
  6.     android:paddingRight="8dip">   
  7.        
  8.     
  9.         android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content"  
  11.         android:textColor="#FFF000"  
  12.         android:textSize="25sp"  
  13.         android:background="#000FFF"  
  14.         />   
  15.        
  16.     
  17.         android:layout_width="fill_parent"    
  18.         android:layout_height="0dip"  
  19.         android:layout_weight="1"  
  20.         android:drawSelectorOnTop="false"/>   
  21.            
  22.            
  23.   


Java代码  
  1.   
  2.     xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="wrap_content"  
  5.     android:orientation="vertical"  
  6.     >   
  7.     
  8.         android:layout_width="wrap_content"  
  9.         android:layout_height="wrap_content"  
  10.         android:textColor="#FFF000"  
  11.         android:textSize="25sp"  
  12.         android:textStyle="bold"  
  13.         />   
  14.     
  15.         android:layout_width="wrap_content"  
  16.         android:layout_height="wrap_content"  
  17.         android:textColor="#FFF000"  
  18.         android:textSize="15sp"  
  19.         />   
  20.