android SD卡浏览器

来源:互联网 发布:模拟核弹爆炸软件 编辑:程序博客网 时间:2024/06/07 22:55

先看例子演示:


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下载
最后,以上例子都来源与安卓无忧,请去应用宝或者豌豆荚下载:例子源码,源码例子文档一网打尽。


0 0
原创粉丝点击