Android ListActivity实现遍历文件列表,查看文档类文件

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<File> files = new ArrayList<File>();  
  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<File>{  
  72.     private LayoutInflater mInflater;  
  73.     boolean isRoot;     //根目录  
  74.       
  75.     public FileListAdapter(Context context, int Resource, List<File> 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. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"   
  5.     android:layout_height="fill_parent"  
  6.     android:paddingLeft="8dip"  
  7.     android:paddingRight="8dip">  
  8.       
  9.     <TextView android:id="@+id/addbook_current_folder"   
  10.         android:layout_width="wrap_content"  
  11.         android:layout_height="wrap_content"  
  12.         android:textColor="#FFF000"  
  13.         android:textSize="25sp"  
  14.         android:background="#000FFF"  
  15.         />  
  16.       
  17.     <ListView android:id="@android:id/list"  
  18.         android:layout_width="fill_parent"   
  19.         android:layout_height="0dip"  
  20.         android:layout_weight="1"  
  21.         android:drawSelectorOnTop="false"/>  
  22.           
  23.           
  24. </LinearLayout>  


Java代码   收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout  
  3.     xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="wrap_content"  
  6.     android:orientation="vertical"  
  7.     >  
  8.     <TextView android:id="@+id/addbook_title"   
  9.         android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content"  
  11.         android:textColor="#FFF000"  
  12.         android:textSize="25sp"  
  13.         android:textStyle="bold"  
  14.         />  
  15.     <TextView android:id="@+id/addbook_info"   
  16.         android:layout_width="wrap_content"  
  17.         android:layout_height="wrap_content"  
  18.         android:textColor="#FFF000"  
  19.         android:textSize="15sp"  
  20.         />  
  21. </LinearLayout>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值