Android简单的文件浏览器,ListActivity的简单用法



2014-07-29 13:39:09MainActivity.java
package com.example.sample_4_21;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends ListActivity {
    List<String> filelist = null;
    String rootPath = "/";
    String currentpath;
    String parentPath;
    ArrayAdapter<String> adapter;
    ArrayAdapter<String> maAdapter;
    TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.mPath);
        init(rootPath);
    }

    void init(String path) {
        adapter = new ArrayAdapter<String>(this, R.layout.file_row,
                getFileList(path));
        setListAdapter(adapter);
        tv.setText(path);
        currentpath = path;
    }

    List<String> getFileList(String path) {
        File f = new File(path);
        File[] allfile = f.listFiles();
        filelist = new ArrayList<String>();
        parentPath = f.getParent();
        if (parentPath==null) {//如果为根目录,则f.getparent()为null
            parentPath = "/";
        }
        filelist.add("back to..." +parentPath);
        for (File file : allfile) {
            filelist.add(file.getPath());
        }
        return filelist;
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        // TODO Auto-generated method stub
        super.onListItemClick(l, v, position, id);
        if (position == 0) {
            if (currentpath == rootPath) {
                Toast.makeText(this, "为根目录", Toast.LENGTH_SHORT).show();
            } else {
                init(parentPath);
            }
        } else {
            if (new File(filelist.get(position)).isFile()) {
                Toast.makeText(this, "文件", Toast.LENGTH_SHORT).show();
            } else if (!new File(filelist.get(position)).canRead()) {
                Toast.makeText(this, "不可读", Toast.LENGTH_SHORT).show();
            } else {
                init(filelist.get(position));
            }
        }

    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if(keyCode==KeyEvent.KEYCODE_BACK&&event.getAction()==KeyEvent.ACTION_UP){
            if(currentpath==rootPath){
                new AlertDialog.Builder(this)
                .setTitle("提示")
                .setMessage("确定退出吗")
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub
                        MainActivity.this.finish();
                    }
                })
                .setNegativeButton("取消", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub
                    }
                })
                .show();
                return true;
            }else{
                init(parentPath);
                return false;
            }
        }else{
            return false;
        }
    }
}

 
   activity_main.xml  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${packageName}.${activityClass}" >

    <TextView
        android:id="@+id/mPath"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:paddingLeft="10dp"
        android:textColor="#00ff33" />

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_below="@+id/mPath"
        android:paddingLeft="10dp"
        android:layout_height="wrap_content" />

</RelativeLayout>
file_row.xml list——item项<?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="20dp"
  android:textSize="15sp"
  android:textColor="#000000"
/>

Android简单的文件浏览器,ListActivity的简单用法

时间: 2024-11-13 04:59:38

Android简单的文件浏览器,ListActivity的简单用法的相关文章

Android入门之文件系统操作(一)简单的文件浏览器 (转)

Android入门之文件系统操作(一)简单的文件浏览器 (转)        1. import java.io.File; 2. import java.util.*; 3. 4. import android.app.Activity; 5. import android.content.Context; 6. import android.os.*; 7. import android.view.*; 8. import android.widget.*; 9. import androi

php写的非常简单的文件浏览器

php写的非常简单的一个文件浏览器,仅供参考. <?php /** * php文件浏览程序函数 showDir() * * $dirName 输入目录路径,默认php文件一级目录,不需输入: * $i 函数嵌套层数计数,函数自己调用,不需输入: * $d 函数传递的目录路径,函数自己调用,不需输入. * * 说明:程序用函数嵌套实现. * 本程序只能浏览php文件一级和下一级目录内容,且下一级目录内无法判断文件类型. * 因为is_dir和is_file函数在下一级目录内全都返回false,使程

简单文件浏览器--实现简易文件选取返回路径功能

因为今天学习Andorid Sample一个示例的时候需要使用一个选取图片的功能,示例中给的Intent没有办法用,因此,自己搜集资料来实现这个简单的文件浏览器,主要这两个文件就贴在下面了: 首先是模型层,定义显示的文件实体(保存文件对应的Icon和其简易名称与绝对路径) 1 public class DirEntry { 2 private int icon; 3 private String dirName; 4 private String path; 5 6 public String

Android简单文件浏览器源代码 (转)

Android简单文件浏览器源代码 (转) activity_main .xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height=&qu

【开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位...

[转]http://www.tuicool.com/articles/jyA3MrU Android开源库 自己一直很喜欢Android开发,就如博客签名一样, 我是程序猿,我为自己代言 . 在摸索过程中,GitHub上搜集了很多很棒的Android第三方库,推荐给在苦苦寻找的开发者,而且我会 不定期的更新 这篇文章. Android下的优秀开发库数不胜数,在本文中,我列举的多是开发流程中最常用的一些.如果你还想了解更多的Android开源库,可以关注我的博客,每一个库都是我认真查看或者编译运行

Android之史上最全最简单最有用的第三方开源库收集整理

Android开源库 自己一直很喜欢Android开发,就如博客签名一样, 我是程序猿,我为自己代言 . 在摸索过程中,GitHub上搜集了很多很棒的Android第三方库,推荐给在苦苦寻找的开发者,而且我会 不定期的更新 这篇文章. Android下的优秀开发库数不胜数,在本文中,我列举的多是开发流程中最常用的一些.如果你还想了解更多的Android开源库,可以关注我的博客,每一个库都是我认真查看或者编译运行的,希望对你产生帮助. 原文: http://blog.csdn.net/caoyou

制作简单的图片浏览器

(1)加载图片和浏览图片的布局文件 图片预先放置在这里. 主要的布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fi

自定义Gallery控件实现简单3D图片浏览器

本篇文章主要介绍如何使用自定义的Gallery控件,实现3D效果的图片浏览器的效果. 话不多说,先看效果. 上面是一个自定义的Gallery控件,实现倒影和仿3D的效果,下面是一个图片查看器,点击上面的小图片,可以在下面查看大图片. 下面重点说一下,实现图片查看器的思路. 1.手机中图片路径的获取 首先,先不管图片如何展示,如果我们想实现图片查看器的功能,我们首先需要做的是获取到所有的图片的路径信息,只有这样,我们才能实现对图片的查看. 我们可以使用下面的代码实现 private List<St

开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发

[原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文  http://blog.csdn.net/caoyouxing/article/details/42418591 主题 开源 安卓开发 http://www.tuicool.com/articles/jyA3MrU Android开源库 自己一直很喜欢Android开发,就如博客签名一样, 我是程序猿,我为自