首页 > 代码库 > Android简单的文件浏览器,ListActivity的简单用法

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

2014-07-29 13:39:09
MainActivity.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"/>