本文参考文献:《疯狂Android讲义 : 第2版 》

主布局文件:

<?xml version="1.0" encoding="utf-8"?>            

列表项布局文件 line.xml 的内容:

<?xml version="1.0" encoding="utf-8"?>        

主程序文件的内容如下:

package com.toby.personal.testlistview;import android.os.Bundle;import android.os.Environment;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.Button;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.TextView;import android.widget.Toast;import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class MainActivity extends AppCompatActivity {    final private static String TAG = "Toby_Test";    ListView listView;    TextView textView;    File currentParent;    File[] currentFiles;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listView = (ListView) findViewById(R.id.list);        textView = (TextView) findViewById(R.id.path);        Log.d(TAG, Environment.getExternalStorageDirectory().getPath());        File root = new File("/mnt/");        if (root.exists()) {            currentParent = root;            currentFiles = root.listFiles();            inflateListView(currentFiles);        }        listView.setOnItemClickListener(new AdapterView.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(MainActivity.this, "Current path is null.",                            Toast.LENGTH_SHORT).show();                } else {                    currentParent = currentFiles[position];                    currentFiles = tmp;                    inflateListView(currentFiles);                }            }        });        Button parent = (Button) findViewById(R.id.parent);        parent.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                try {                    if (!currentParent.getCanonicalPath().equals("/mnt/")) {                        currentParent = currentParent.getParentFile();                        currentFiles = currentParent.listFiles();                        inflateListView(currentFiles);                    }                } catch (IOException e) {                    e.printStackTrace();                }            }        });    }    private void inflateListView(File[] files) {        if (files == null || files.length <= 0) {            return;        }        List> listItems = new ArrayList<>();        for (File file : files) {            Map listItem = new HashMap<>();            listItem.put("icon", file.isDirectory() ? R.drawable.folder : R.drawable.file);            listItem.put("fileName", file.getName());            listItems.add(listItem);        }        SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems, R.layout.line,                new String[]{"icon", "fileName"}, new int[]{R.id.icon, R.id.file_name});        listView.setAdapter(simpleAdapter);        try {            textView.setText(String.format("Current Path: %s", currentParent.getCanonicalPath()));        } catch (IOException e) {            e.printStackTrace();        }    }}

运行效果:

Android SD 卡文件浏览器_第1张图片 显示效果

更多相关文章

  1. 【Android】常用控件及布局
  2. android studio恢复误删文件
  3. Android 获取文件的缩略图
  4. Android 文件相关总结
  5. android私有文件资源文件的存取
  6. Android调用系统自带的文件管理器进行文件选择
  7. Android判断有无外置SD卡(TF卡),并读写文件

随机推荐

  1. 对RecycleView的多种item布局的封装
  2. Android应用程序窗口(Activity,Window,View
  3. Android dumpsys 使用之分析网络使用情况
  4. [Android]Http通信,HttpService服务端通过
  5. Android高手应该精通哪些内容
  6. Android——使用AIDL实现进程间通讯简单
  7. Android SDK的安装和Android命令行工具
  8. Ubuntu共享WiFi(AP)给Android方法【修正
  9. android根据uri或文件绝对路径获取文件基
  10. ReactNative ART绘制