使用ContentProvider管理多媒体-----查看多媒体数据中的所有图片
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.os.Bundle;
import android.provider.MediaStore.Images.Media;
import android.app.Activity;
import android.app.AlertDialog;
import android.database.Cursor;
import android.graphics.BitmapFactory;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
//为view按钮的单击事件绑定监听器
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 清空names、descs、fileNames集合里原有的数据
names.clear();
descs.clear();
fileNames.clear();
//通过ContentResolver查询所有图片信息
Cursor cursor = getContentResolver().query(
Media.EXTERNAL_CONTENT_URI, null, null, null, null);
while(cursor.moveToNext()){
//获取图片的显示名
String name = cursor.getString(cursor.getColumnIndex(Media.DISPLAY_NAME));
//获取图片的详细描述
String desc = cursor.getString(cursor.getColumnIndex(Media.DESCRIPTION));
//获取图片的保存位置的数据
byte[] data = cursor.getBlob(cursor.getColumnIndex(Media.DATA));
//将图片名添加到names集合中
names.add(name);
//将图片描述添加到descs集合中
descs.add(desc);
//将图片保存路径添加到fileNames集合中
fileNames.add(new String(data , 0 ,data.length-1));
}
//创建一个List集合,List集合的元素是Map
List<Map<String, String>> listItems = new ArrayList<Map<String,String>>();
//将names、descs两个集合对象的数据转换到Map集合中
for(int i = 0 ;i<names.size();i++){
Map<String, Object> listItem = new HashMap<String, Object>();
listItem.put("name", names.get(i));
listItem.put("desc", descs.get(i));
listItems.addAll(listItems);
}
//创建一个SimpleAdapter
SimpleAdapter simpleAdapter = new SimpleAdapter(
MainActivity.this, listItems, R.layout.line,
new String[]{"name","desc"}, new int[]{R.id.name,R.id.desc});
//为show ListView组件设置Adapter
show.setAdapter(simpleAdapter);
}
});
show.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// 加载view.xml界面布局代表的视图
View viewDialog = getLayoutInflater().inflate(R.layout.view, null);
//获取viewDialog中ID为image的组件
ImageView image = (ImageView) viewDialog.findViewById(R.id.image);
//设置image显示指定图片
image.setImageBitmap(BitmapFactory.decodeFile(fileNames.get(position)));
//使用对话框显示用户单击的图片
new AlertDialog.Builder(MainActivity.this).setView(viewDialog)
.setPositiveButton("确定", null).show();
}
});
使用ContentProvider管理多媒体-----查看多媒体数据中的所有图片的更多相关文章
- 使用ContentProvider管理多媒体-----向多媒体数据中添加数据
//为add按钮的单击事件绑定监听器 add.setOnClickListener(new OnClickListener() { @Override public void onClick(View ...
- 【API管理 APIM】如何查看APIM中的Request与Response详细信息,如Header,Body中的参数内容
问题描述 通过APIM门户或者是Developer门户,我们可以通过Test功能测试某一个接口,通过Trace可以获取非常详细的Request,Response的信息,包含Header,X-Forwa ...
- 【Java EE 学习 52】【Spring学习第四天】【Spring与JDBC】【JdbcTemplate创建的三种方式】【Spring事务管理】【事务中使用dbutils则回滚失败!!!??】
一.JDBC编程特点 静态代码+动态变量=JDBC编程. 静态代码:比如所有的数据库连接池 都实现了DataSource接口,都实现了Connection接口. 动态变量:用户名.密码.连接的数据库. ...
- SQL Server 2005/2008 触发器的管理和查看
1.通过可视化操作来管理和查看触发器 在Microsoft SQL Server Management Studio中,选中某一数据库的某一张表时,在“对象资源管理器详细”窗口中有“触发器”项.通过“ ...
- 查看python中模块的所有方法
查看python中模块的所有方法 安装的python模块,现将查看方法总结如下 一.CMD命令行下使用pydoc命令 在命令行下运行$ pydoc modules即可查看 二.在python交 ...
- [Linux]系统管理: 进程管理(ps/top/pstree/kill/pkill), 工作管理, 系统资源查看, 系统定时任务
进程管理:查看与终止 进程查看 1. 进程是正在执行的程序或命令. 2. 进程管理的作用: 判断服务器健康状态, 查看系统中所有进程 杀死进程 3. 查看系统中所有进程 ps aux # 查看系 ...
- MIUI添加内存调试工具:查看进程中的Bitmap信息
Android开发中的内存管理一直是令人头痛的事情.其中占用内存最大的一般是Bitmap. 在上周五发布的MIUI开发版中,我添加了查看内存里Bitmap信息的功能.大家开发app的时候可以使用这 ...
- 【ActiveMQ】管理界面查看消息详情,报错/WEB-INF/tags/form/forEachMapEntry.tag PWC6199: Generated servlet error: The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files
ActiveMQ版本:5.12 JDK版本:1.8 ===================== 使用ActiveMQ过程中,在管理界面查看消息详情,发现报错: 查看日志信息,报错如下: 2017-11 ...
- 如何查看 Linux 中所有正在运行的服务
有许多方法和工具可以查看 Linux 中所有正在运行的服务.大多数管理员会在 System V(SysV)初始化系统中使用 service service-name status 或 /etc/ini ...
随机推荐
- mysql概要(二)类型
1.mysql数值型范围 tinyint可选属性 tinyint(N) unsigned zerofill N:表示显示长度,与zerofill配合使用,即长度不够用0填充,并且自动变成无符号的数,仅 ...
- css3动画导航实现
代码 <!DOCTYPE html> <!-- saved from url=(0223)file:///C:/Users/user/AppData/Local/Temp/HZ$D. ...
- Java异常与运行时异常,以及与线程的关系
具体可以看这篇文章:http://www.cnblogs.com/charlesblc/p/6171103.html 都写在里面了,为了避免更新不一致,这里就不再写一遍了.只给个链接. 注意Java和 ...
- iOS开发之 Xcode 5 下让你的应用在不同状态(debug, release)有不同的图标
http://nickcheng.com/post/unique-icons-for-your-app-in-different-state-in-xcode5-debug-release 应用在发布 ...
- ID和Name的区别
HTML元素的ID和Name属性的区别一直认为ID和NAME是一样的,两个又可以一起出现,甚是疑惑.今天BAIDU了一下,才发现里面大有文章.发出来研究研究:最classical的答案:ID就像是一个 ...
- linux登录mysql
mysql -u 用户名 -p密码 mysql -u root -psqj888
- Eclipse 设置文件的默认打开方式
web开发中,我们在编辑JSP/xml的时候,会碰到一个非常郁闷的事,直接双击打开的JSP页面,当我们在编辑的时候会到处跳,这个我是深有体会,所以我们就用右击 open with,但是久而久之我们会感 ...
- SO_REUSEADDR 和 SO_REUSEPORT
大部分内容来自stackoverflow上的回答:Socket options SO_REUSEADDR and SO_REUSEPORT, how do they differ? Do they m ...
- IE浏览器打印合格证相关问题
0.打印机驱动,打印参数设置,首选项配置,数值都必须精确. 1.google浏览器死都不兼容,上下行之间会重叠. 解决方案:必须IE 2.IE 10,IE 11 需要开兼容性视图设置,添加该网站.不然 ...
- OpenCV C++ 计算文件夹中对象文件数目及批量处理后保存到txt文件
//采用windows控制台实现计算文件夹中对象总数以及批量读取对象 //#include <afx.h> //和windows.h是一样的作用 #include <opencv2/ ...