package com.scope.view;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.scope.R;
import com.scope.util.FileOp;
import android.app.Activity;
import android.app.LauncherActivity;
import android.app.ListActivity;
import android.graphics.Path;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
public class FileManagerActivity extends Activity {
private TextView file_path;
private ListView lv;
File path = Environment.getExternalStorageDirectory();
String root_path = path.getAbsolutePath();
List<Map<String, Object>> list;
Map<String, Object> map;
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
file_path = (TextView) findViewById(R.id.file_path);
file_path.setText(root_path);
lv = (ListView) findViewById(R.id.list);
lv.setAdapter(getDeviceListAdapter(root_path));
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int pos, long id) {
Map<String, Object> item = (Map<String, Object>) parent.getItemAtPosition(pos);
String file_abs_path = (String) item.get("file_abs_path");
System.out.println("file_abs_path " + file_abs_path);
File file = new File(file_abs_path);
if (!file.exists()) {
// finish();
return;
}
if(file.isDirectory()){
System.out.println("file_abs_pat" + file_abs_path);
lv.setAdapter(getDeviceListAdapter(file_abs_path));
file_path.setText(file_abs_path);
}else{
}
}
});
}
private List<Map<String, Object>> getFile(String file_path) {
list = new ArrayList<Map<String, Object>>();
File file = new File(file_path);
for (File files : file.listFiles()) {
map = new HashMap<String, Object>();
String file_abs_path = files.getAbsolutePath();
map.put("file_abs_path", file_abs_path);
if (files.isDirectory()) {
map.put("item_type", R.drawable.item_type_dir);
map.put("item_name", files.getName());
map.put("item_sel", R.drawable.item_img_nosel);
long file_date = files.lastModified();
String date = new SimpleDateFormat("yyyy/MM/dd HH:mm")
.format(new Date(file_date));
map.put("item_date", date + " | ");
// long file_size = file.length();
// map.put("item_size", file_size + " | ");
list.add(map);
} else {
map.put("item_name", files.getName());
map.put("item_type", FileOp.getFileTypeImg(files.getName()));
map.put("item_sel", R.drawable.item_img_nosel);
long file_date = files.lastModified();
String date = new SimpleDateFormat("yyyy/MM/dd HH:mm")
.format(new Date(file_date));
map.put("item_date", date + " | ");
long file_size = files.length();
map.put("item_size", FileOp.getFileSizeStr(file_size)+ " | ");
list.add(map);
}
}
return list;
}
private ListAdapter getDeviceListAdapter(String file_path) {
return new SimpleAdapter(FileManagerActivity.this, getFile(file_path),
R.layout.filelist_item, new String[] { "item_type",
"item_name", "item_sel", "item_size", "item_date" },
new int[] { R.id.item_type, R.id.item_name, R.id.item_sel,
R.id.item_size, R.id.item_date });
}
}
分享到:
相关推荐
综上所述,实现“读取SDcard Database并在Android ListView显示”的功能,需要理解Android的文件权限、SQLite数据库操作、ListView与Adapter的结合使用,以及优化UI性能的技巧。这些知识点对于Android开发者来说是...
在这个特定的项目中,我们的目标是将SD卡中的MP3文件显示在一个ListView中。ListView是Android UI设计中常用的控件,它可以有效地展示长列表数据,通常用于文件目录浏览、联系人列表等场景。 首先,我们需要获取SD...
这里,`getFileNamesFromSdCard()`是一个方法,它遍历SDCard并返回文件名列表。 自定义ListView时,还可以实现各种高级功能,比如添加点击事件、加载更多数据、使用头视图和脚部视图等。通过结合使用ListView和对...
本例中,我们探讨了如何利用ListView显示SDCard(外部存储)上的文件列表。下面将详细介绍这个过程。 首先,我们需要获取SDCard上特定目录的文件列表。在Android中,`Environment.getExternalStorageDirectory()` ...
可以遍历SDCard根目录,通过文件扩展名过滤出TXT文件。 3. **文件读取**: 读取TXT文件内容通常使用`BufferedReader`或`Scanner`类。逐行读取文件内容,然后存储到适当的数据结构(如ArrayList)中,以便后续显示...
4. **文件选择与返回文件名**:在UI界面上,可以使用ListView、RecyclerView或者其他自定义视图来显示过滤后的文件列表。当用户选择一个TXT文件后,通过点击事件获取选中的文件名,并使用`File.getName()`方法获取不...
1. **获取文件信息**:使用`Environment.getExternalStorageDirectory()`方法获取SD卡根目录,然后遍历该目录下的所有文件和子文件夹。`java.io.File`类提供了一系列方法,如`listFiles()`用于获取目录下的文件和子...
接着,我们需要实现`readFile`方法,这是一个递归函数,用于遍历SDCard上的所有文件和子目录。这里我们先设定扫描路径为"/etc",实际应用中应替换为SDCard的根路径,通常是`Environment.getExternalStorageDirectory...
首先,Android文件浏览器的核心功能包括目录遍历、文件显示、文件选择以及基本的文件操作(如复制、移动、删除等)。为了实现这些功能,开发者需要熟悉以下几个关键知识点: 1. **Android权限管理**:在Android系统...
1. UI组件:文件管理器通常由ListView或RecyclerView展示文件和目录,用Adapter进行数据绑定。每个条目可能包含文件名、图标(表示文件类型)、大小、日期等信息。 2. 文件操作:包括创建、删除、重命名、复制、移动...
3. 使用`ListView`展示文件和目录,自定义列表项布局。 4. 创建适配器绑定数据到`ListView`。 5. 实现路径栏显示当前目录,支持目录切换。 6. 监听`ListView`点击事件,实现文件选择功能。 通过以上步骤,你可以...
这样,在遍历文件时,只有满足条件的文件才会被显示。 5. **文件操作权限**:从Android 6.0(API级别23)开始,系统引入了运行时权限。如果应用需要读取外部存储(`sdcard`),需要在运行时请求`READ_EXTERNAL_...
4. **ListView与RecyclerView**:在UI设计中,文件管理器通常使用列表视图展示文件和目录。早期的Android应用可能使用ListView,但现代应用更多地采用RecyclerView,因为它更加灵活且性能优化。 5. **异步处理**:...
"iconFile带图标的文件资源管理器.zip"可能包含了一个实现这一功能的示例项目,它允许用户浏览、选择和管理手机或设备上的文件,并且针对不同类型的文件显示相应的图标。 首先,我们要理解Android中的文件系统结构...
在Android系统中,文件管理器是一个至...总的来说,通过分析这个Android文件管理器的源代码,开发者可以学习到Android系统的文件操作、权限管理、UI设计以及Intent的使用,这些都是构建Android应用不可或缺的基础知识。
5. **性能优化**:考虑到文件数量可能很大,遍历过程应避免一次性加载所有文件,而是采用异步加载、分页显示等策略,以减少内存消耗和提高响应速度。此外,可以利用缓存机制,将最近访问的文件信息存储起来,以提高...
4. **ListView与Adapter**:为了在UI中显示扫描到的音乐文件,通常会使用`ListView`组件。结合自定义的`BaseAdapter`或`CursorAdapter`,可以将查询到的音乐信息映射到ListView的各个项,实现列表的动态加载。 5. *...
可以使用ListView、RecyclerView展示搜索结果,提供搜索框供用户输入关键词,并显示进度条以反馈搜索进度。 10. **搜索算法** 最后,对于复杂的搜索需求,可能需要实现更高级的搜索算法,如二分查找、Trie树或倒排...