[代码 步骤]
1. 定义所需界面 main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="bottom"
>
<Button
android:id="@+id/previous"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Back "
android:gravity="right"
/>
<TextView
android:id="@+id/path"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
/>
</LinearLayout>
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
2. 定义一些后面用到的字符串常量
public final static String FILE_QUERY = "file_query";
public final static String FILE_NAME = "name";
public final static String FILE_TYPE = "type";
public final static String FILE_TYPE_FILE = "file";
public final static String FILE_TYPE_DIRECTORY = "directory";
3. 定义存放查询结果的数据结构
//1. 定义
List<Map<String,String>> value;
//2. 初始化
value = new ArrayList<Map<String, String>>();
4. 定义与文件有关的变量 用于存放结果
//存放 查询目标
String target="";
//存放 查询目标的上级目录
String parent="";
5. 定义方法 用于查询目标的子文件/目录
public String updateNext(String s){
parent = target;
target += "/" + s;
return target;
}
public List<Map<String,String>> getNextList(String s){
String string = updateNext(s);
if(checkIsFile(string)){
//string 就是你所需要的文件
string = updatePrevious();
}
return list(string);
}
6. 定义方法 用于查询目标的上级目录
public String updatePrevious(){
target = parent;
File file = new File(parent);
parent = file.getParent();
return target;
}
public List<Map<String,String>> getPreviousList(){
String string = updatePrevious();
return list(string);
}
7. 注册查询事件: 当单击ListView 中某项 查询子文件/子目录 并刷新结果
list.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
String s = value.get((int)arg3).get("name");
value = getNextList(s);
adapter.notifyDataSetChanged();
}
});
8. 注册查询事件: 当返回Button时候 返回上级目录 并刷新结果
previous.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
value = getPreviousList();
adapter.notifyDataSetChanged();
}
});
done!