博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android ListActivity实现遍历文件列表,查看文档类文件
阅读量:4992 次
发布时间:2019-06-12

本文共 3838 字,大约阅读时间需要 12 分钟。

package com.shawn.zp.reader.activity; import java.io.File; import java.io.FileFilter; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; import android.app.ListActivity; import android.content.Context; import android.os.Bundle; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; public class AddBookActivity extends ListActivity{
private TextView currentFolder; //当前文件夹 private FileListAdapter fileList; //文件过滤器,查找文件夹或文本文件 private static final FileFilter BOOKS_FILTER = new FileFilter() {
public boolean accept(File f) {
return f.isDirectory() || f.getName().toLowerCase().matches("^.*?\\.(txt|text)$"); } }; public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.layout_addbook_directory); currentFolder = (TextView)findViewById(R.id.addbook_current_folder); fill(new File("/")); } public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && !fileList.isRoot) {
fill(fileList.getItem(0)); return true; } return super.onKeyDown(keyCode, event); } @Override protected void onListItemClick(ListView l, View v, int position, long id) {
File file = fileList.getItem(position); if (file.isDirectory()) fill(file); } //跳转目录 private void fill(File folder) {
boolean isRoot = folder.getParent() == null; currentFolder.setText(AddBookActivity.this.getResources().getString(R.string.addbook_current_folder) + folder.getAbsolutePath()); List
files = new ArrayList
(); if (!isRoot) files.add(folder.getParentFile()); File[] filterFiles = folder.listFiles(BOOKS_FILTER); if(null != filterFiles && filterFiles.length>0) {
for (File file : filterFiles) {
files.add(file); } } fileList = new FileListAdapter(this, R.layout.layout_addbook_file, files, isRoot); setListAdapter(fileList); } } //文件列表适配器 class FileListAdapter extends ArrayAdapter
{
private LayoutInflater mInflater; boolean isRoot; //根目录 public FileListAdapter(Context context, int Resource, List
objects, boolean isRoot) {
super(context,Resource,objects); this.isRoot = isRoot; this.mInflater = LayoutInflater.from(context); } @Override public View getView(int position, View convertView, ViewGroup parent) {
convertView = mInflater.inflate(R.layout.layout_addbook_file, null); TextView title = (TextView)convertView.findViewById(R.id.addbook_title); TextView info = (TextView)convertView.findViewById(R.id.addbook_info); File file = getItem(position); if (position == 0 && !isRoot) title.setText(R.string.addbook_parent_folder); else {
title.setText(file.getName()); if (file.isDirectory()) info.setText(R.string.addbook_directory); else {
long fileSize = file.length(); if(fileSize >= 1024*1024) {
float size = fileSize/(1024f*1024f); info.setText(new DecimalFormat("#.00").format(size) + "MB"); }else if(fileSize >= 1024) {
float size = fileSize/1024f; info.setText(new DecimalFormat("#.00").format(size) + "KB"); }else {
info.setText(fileSize + "B"); } } } return convertView; } }

转载于:https://www.cnblogs.com/shawn-zp/archive/2012/03/23/2413124.html

你可能感兴趣的文章
Swift - 内存泄露原因(循环强引用)及解决办法
查看>>
AIDL-Android接口描述语言实现跨进程通讯
查看>>
剑指Offer - 九度1354 - 和为S的连续正数序列
查看>>
LeetCode - Anagrams
查看>>
用MFC时,如果程序崩溃,检查内存,然后注意GDI数量,在任务管理器里选项-查看列-GDI数量...
查看>>
angular(转)
查看>>
ansible简单现网配置
查看>>
数据结构C++版-树
查看>>
JavaScript学习总结--创建对象(3_原型)
查看>>
FZU 2092 收集水晶 dp+bfs
查看>>
Java学习---网页编辑器FCKeditor使用详解
查看>>
IDEA开发React环境配置
查看>>
香港两日游
查看>>
cordova 打包发布正式版 apk
查看>>
常用集合比较
查看>>
二分搜索
查看>>
感觉这周的每日都是累
查看>>
Tarjan求点双连通分量
查看>>
Tomcat项目自动部署脚本
查看>>
Python操作MySQL数据库
查看>>