先看例子演示:
java代码
package mm.shandong.com.testsdbrowser;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class TestSDBrowserActivity extends AppCompatActivity {
ListView listView;
SimpleAdapter simpleAdapter;
List<Map<String, Object>> listMaps;
File currentParentFile;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_sdbrowser);
listView = (ListView) findViewById(R.id.listView);
listMaps = new ArrayList<Map<String, Object>>();
currentParentFile = null;
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File rootFile = Environment.getExternalStorageDirectory();
List<File> files = new ArrayList<File>();
Collections.addAll(files, rootFile.listFiles());
refreshListViewData(files);
}
//为listView创建simpleAdapter
simpleAdapter = new SimpleAdapter(this, listMaps, R.layout.item_sd_listview,
new String[]{"icon", "fileName"},
new int[]{R.id.imageView, R.id.textView});
listView.setAdapter(simpleAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
Map map = (Map) adapterView.getItemAtPosition(position);
File file = (File) map.get("file");
if (file.isFile()) {
Toast.makeText(TestSDBrowserActivity.this,
"您点击的是文件,没有子文件",
Toast.LENGTH_SHORT).show();
} else {
currentParentFile = file;
List<File> files = new ArrayList<File>();
Collections.addAll(files, file.listFiles());
refreshListViewData(files);
simpleAdapter.notifyDataSetChanged();
}
}
});
}
///刷新listview中的数据
public void refreshListViewData(List<File> files) {
Iterator<File> iterator = files.iterator();
listMaps.clear();
while (iterator.hasNext()) {
File file = iterator.next();
Map<String, Object> map = new HashMap<String, Object>();
if (file.isFile()) {
map.put("icon", R.drawable.file32);
} else {
map.put("icon", R.drawable.folder32);
}
map.put("fileName", file.getName());
map.put("file", file);
listMaps.add(map);
}
}
///返回到上一级目录
public void backToParentDir(View view) {
if (currentParentFile != null) {
File parentParentFile = currentParentFile.getParentFile();
List<File> files = new ArrayList<File>();
Collections.addAll(files, parentParentFile.listFiles());
refreshListViewData(files);
simpleAdapter.notifyDataSetChanged();
try {
if (parentParentFile.getCanonicalPath().equals(Environment.
getExternalStorageDirectory().getCanonicalPath())) {
currentParentFile = null;
} else {
currentParentFile = parentParentFile;
}
} catch (IOException e) {
e.printStackTrace();
}
} else {
Toast.makeText(TestSDBrowserActivity.this,
"已是SD卡根目录", Toast.LENGTH_SHORT).show();
}
}
}
本人微博:honey_11
Demo下载
最后,以上例子都来源与安卓无忧,请去应用宝或者豌豆荚下载:例子源码,源码例子文档一网打尽。
最后,以上例子都来源与安卓无忧,请去应用宝或者豌豆荚下载:例子源码,源码例子文档一网打尽。