----Main.java
public class Main extends Activity {
private TextView textView;
private Button button;
private ListView listView;
public File currentParentFile;
public File[] currentFiles;
public static String sdcardDir ;
static {
try {
//sd卡的路径
sdcardDir = Environment.getExternalStorageDirectory().getCanonicalPath();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView = (TextView) findViewById(R.id.textView1);
button = (Button) findViewById(R.id.button1);
listView = (ListView) findViewById(R.id.listView1);
File root = new File(sdcardDir);
if(root.exists()){
currentParentFile = root;
currentFiles = root.listFiles();
updateListView(currentFiles);
}
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view,
int position, long id) {
if (currentFiles[position].isFile())
return;
File[] tmp = currentFiles[position].listFiles();
if (tmp == null || tmp.length == 0) {
Toast.makeText(Main.this, "当前路径无效,或没有文件",
Toast.LENGTH_SHORT).show();
} else {
currentParentFile = currentFiles[position];
currentFiles = tmp;
updateListView(currentFiles);
}
}
});
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
if (!currentParentFile.getCanonicalPath().equals(
sdcardDir)) {
currentParentFile = currentParentFile.getParentFile();
currentFiles = currentParentFile.listFiles();
updateListView(currentFiles);
}
else
return;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
private void updateListView(File[] files) {
List> itemps = new ArrayList>();
for (int i = 0; i
Map listItem = new HashMap();
if (files[i].isDirectory())
listItem.put("icon", R.drawable.folder);
else
listItem.put("icon", R.drawable.file);
listItem.put("name", files[i].getName());
itemps.add(listItem);
}
SimpleAdapter simpleAdapter = new SimpleAdapter(this, itemps,
R.layout.listitem, new String[] { "icon", "name" }, new int[] {
R.id.imageView1, R.id.text });
listView.setAdapter(simpleAdapter);
try {
textView.setText("当前路径为:"+currentParentFile.getCanonicalPath());
} catch (IOException e) {
e.printStackTrace();
}
}
}
布局文件----main.xml
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="当前路径:" />
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="返回上一级目录" />
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/button1"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView1" >
效果:
listview的每一条的布局:
---listitem.xml
android:layout_width="match_parent"
android:layout_height="match_parent" >
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/ic_launcher" />
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="15dp"
android:layout_toRightOf="@+id/imageView1"
android:text="TextView" />
demo运行效果: