1 package com.example.flexd12;
2
3 import java.io.File;
4 import java.util.ArrayList;
5 import java.util.List;
6
7 import android.os.Bundle;
8 import android.app.Activity;
9 import android.app.AlertDialog;
10 import android.app.ListActivity;
11 import android.content.DialogInterface;
12 import android.util.Log;
13 import android.view.Menu;
14 import android.view.View;
15 import android.widget.ArrayAdapter;
16 import android.widget.ListView;
17 import android.widget.TextView;
18
19 public class MainActivity extends ListActivity {
20
21 private List<String> items = null;//显示的名称们
22 private List<String> paths = null;//显示的路径们
23
24 private String rootPath = "/";//根目录
25 private TextView curPathTV;//当前目录
26
27 @Override
28 protected void onCreate(Bundle savedInstanceState) {
29 super.onCreate(savedInstanceState);
30 setContentView(R.layout.activity_main);
31
32 curPathTV = (TextView) findViewById(R.id.tv1);
33 //取得目录
34 getFilePath(rootPath);
35 }
36
37 /**
38 * 传入路径串,获取目录列表
39 */
40 private void getFilePath(String filePath){
41 items = new ArrayList<String>();
42 paths = new ArrayList<String>();
43
44 File curFile = new File(filePath);//当前目录
45 File[] curFiles = curFile.listFiles();//当前目录下文件
46
47 //如果不是根目录,总是有回到根目录和回到上层的
48 if(!filePath.equals(rootPath)){
49 items.add(rootPath);
50 paths.add(rootPath);
51
52 items.add("../");
53 paths.add(curFile.getParent());
54 }
55
56 //取得当前目录下的所有文件名、文件路径
57 for(int i=0;i<curFiles.length;i++){
58 File tempFile = curFiles[i];
59 items.add(tempFile.getName()+ (tempFile.isDirectory()?" -DIR ":" -FILE "));
60 paths.add(tempFile.getPath());
61 }
62
63 //ArrayAdapter的layout、items,并传入ListActivity
64 ArrayAdapter<String> fileList = new ArrayAdapter<String>(this,R.layout.row_layout, items);
65 setListAdapter(fileList);
66 }
67
68
69 /**
70 * ListActivity列表项点击事件
71 */
72 @Override
73 protected void onListItemClick(ListView l, View v, int position, long id) {
74
75 //从paths取得路径,当前点击的路径
76 File filePosition = new File(paths.get(position));
77 curPathTV.setText(paths.get(position));
78
79 if(filePosition.isDirectory()){
80 //如果是目录,则再一次取列表
81 Log.i("onListItemClick", paths.get(position));
82 getFilePath(paths.get(position));
83 }else{
84 //如果是文件,弹出提示框
85 new AlertDialog.Builder(this)
86 .setIcon(R.drawable.ic_launcher)
87 .setTitle("FileName:" + filePosition.getName())
88 .setPositiveButton("OK",
89 new DialogInterface.OnClickListener() {
90
91 @Override
92 public void onClick(DialogInterface dialog,
93 int which) {
94 // TODO Auto-generated method stub
95 }
96 }).show();
97 }
98
99 // TODO Auto-generated method stub
100 super.onListItemClick(l, v, position, id);
101 }
102
103 @Override
104 public boolean onCreateOptionsMenu(Menu menu) {
105 // Inflate the menu; this adds items to the action bar if it is present.
106 getMenuInflater().inflate(R.menu.activity_main, menu);
107 return true;
108 }
109
110
111 }