文件管理器时所遇到的问题
1.如何点击列表项进入相应的子菜单
答:自定义MyAdapter继承自BaseAdapter,获取目录下的所有文件存入ArrayList中,然后依次为布局中的textView赋值,这样点击列表项的时候获取的是文件,通过该文件的绝对路径,获取该文件下的所有子文件。
2.如何返回上一级目录
答:每次单击列表项的时候把该目录的绝对路径添加的一个一个ArrayList中,点击返回的时候再把列表中最后一个文件去除后的最后一个路径取出来,就是上一级目录了
源码
import android.app.AlertDialog;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
/**
* 文件管理器主要功能实现
* 1.列出系统目录下所有文件及文件夹
* 2.点击文件夹 可以进入下一级目录
* 3.点击返回可以进入上一级目录
* 4.为文件或文件夹添加相应的图标,列出文件夹下的文件和文件夹的数量,文件最后被修改的时间
* 5.点击文件的时候为文件选择相应的方式打开
*/
public class MainActivity extends AppCompatActivity {
private ListView lv;
private Button btnBack,btnGo;
private MyAdapter myAdapter;
private FileUtil fileUtil;
private ArrayList<String> pathList;
private String upPath;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();//初始化用户界面
}
private void init() {
fileUtil=new FileUtil();
pathList=new ArrayList<String>();
upPath=Environment.getExternalStorageDirectory().getAbsolutePath();
pathList.add(upPath);
fileUtil.getFiles(upPath);
lv= (ListView) findViewById(R.id.lv);
btnBack= (Button) findViewById(R.id.btn_back);
btnGo= (Button) findViewById(R.id.btn_go);
btnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void