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" />