Android編寫文件瀏覽器簡單實現
更新時間:2016年11月09日 16:47:02 作者:cc雜貨圈
這篇文章主要為大家詳細介紹了Android編寫文件瀏覽器簡單實現,具有一定的參考價值,感興趣的小伙伴們可以參考一下
有時候我們保存文件總會用到文件瀏覽器功能.那么今天博主帶大家做一個。
那么開始,瀏覽文件,我們就需要寫一個文件工具類。
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.util.Log;
public class FileUtils {
/**
* 獲取當前目錄下的所有文件或文件夾
* @param path 路徑
* @return
*/
public static List<Map<String,Object>> GetPathFilsList(String path) {
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
List<Map<String,Object>> filelist = new ArrayList<Map<String,Object>>();
try {
String[] Files = new File(path).list();
for(String file : Files){
Map<String, Object> map = new HashMap<String, Object>();
if(new File(path+file).isDirectory()){
map.put("isDirectory",2);
map.put("fileName", file);
list.add(map);
}else {
map.put("isDirectory", 1);
map.put("fileName", file);
filelist.add(map);
}
}
list.addAll(filelist);
return list;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return null;
}
}
}
這里會將文件和文件夾區(qū)分出來,便于顯示區(qū)分。
之后我們需要用到一個適配器,用于顯示這些數據的ListView
private class FileBrowserAdapter extends BaseAdapter{
private List<Map<String, Object>> fileList;
private Context context;
public FileBrowserAdapter(Context Context,
List<Map<String, Object>> fileList) {
this.fileList = fileList;
this.context = context;
}
@Override
public int getCount() {
return fileList == null ? 0 : fileList.size();
}
@Override
public Object getItem(int position) {
return fileList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@SuppressLint("InflateParams")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater mInflater = LayoutInflater
.from(getApplicationContext());
View view = null;
view = mInflater.inflate(R.layout.file_list_item, null);
ImageView image = (ImageView) view
.findViewById(R.id.file_list_item_image);
if (Integer
.parseInt(fileList.get(position).get("isDirectory") + "") == 2)
image.setImageResource(R.drawable.folder);
else if (Integer.parseInt(fileList.get(position).get("isDirectory")
+ "") == 1)
image.setImageResource(R.drawable.documents);
TextView textView = (TextView) view
.findViewById(R.id.file_list_item_testview);
textView.setTextColor(Color.BLACK);
textView.setText(fileList.get(position).get("fileName") + "");
return view;
}
}
最后我們需要實現這些
dir = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/";
fileListView = (ListView) findViewById(R.id.file_listview);
listItemClickListener = new FileListItemClickListener();
// //設置點擊事件
fileListView.setOnItemClickListener(listItemClickListener);
fileList = FileUtils.GetPathFilsList(dir);
if (new File(dir).getParent() != null) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("isDirectory", 0);
map.put("fileName", new File(dir).getParent());
fileList.add(0, map);
}
FileBrowserAdapter phoneFileBrowserAdapter = new FileBrowserAdapter(
getApplicationContext(), fileList);
fileListView.setAdapter(phoneFileBrowserAdapter);
效果圖:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Android Studio中使用jni進行opencv開發(fā)的環(huán)境配置方法
今天小編就為大家分享一篇Android Studio中使用jni進行opencv開發(fā)的環(huán)境配置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
Android使用HttpURLConnection實現網絡訪問流程
早些時候其實我們都習慣性使用HttpClient,但是后來Android6.0之后不再支持HttpClient,需要添加Apache的jar才行,所以,就有很多開發(fā)者放棄使用HttpClient了,HttpURLConnection畢竟是標準Java接口(java.net) ,適配性還是很強的2022-12-12
Kotlin ViewModelProvider.Factory的使用實例詳解
這篇文章主要介紹了Kotlin ViewModelProvider.Factory的使用,在我們使用 ViewModel 的時候,我們會發(fā)現,有的時候我們需要用到 ViewModelFactory,有的時候不需要2023-02-02
Android OnCreate()中獲取控件高度與寬度兩種方法詳解
這篇文章主要介紹了Android OnCreate()中獲取控件高度與寬度兩種方法詳解的相關資料,這里提供了兩種方法,大家可以都看下,需要的朋友可以參考下2016-12-12

