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管理多媒体-----查看多媒体数据中的所有图片的更多相关文章

  1. 使用ContentProvider管理多媒体-----向多媒体数据中添加数据

    //为add按钮的单击事件绑定监听器 add.setOnClickListener(new OnClickListener() { @Override public void onClick(View ...

  2. 【API管理 APIM】如何查看APIM中的Request与Response详细信息,如Header,Body中的参数内容

    问题描述 通过APIM门户或者是Developer门户,我们可以通过Test功能测试某一个接口,通过Trace可以获取非常详细的Request,Response的信息,包含Header,X-Forwa ...

  3. 【Java EE 学习 52】【Spring学习第四天】【Spring与JDBC】【JdbcTemplate创建的三种方式】【Spring事务管理】【事务中使用dbutils则回滚失败!!!??】

    一.JDBC编程特点 静态代码+动态变量=JDBC编程. 静态代码:比如所有的数据库连接池 都实现了DataSource接口,都实现了Connection接口. 动态变量:用户名.密码.连接的数据库. ...

  4. SQL Server 2005/2008 触发器的管理和查看

    1.通过可视化操作来管理和查看触发器 在Microsoft SQL Server Management Studio中,选中某一数据库的某一张表时,在“对象资源管理器详细”窗口中有“触发器”项.通过“ ...

  5. 查看python中模块的所有方法

    查看python中模块的所有方法     安装的python模块,现将查看方法总结如下 一.CMD命令行下使用pydoc命令 在命令行下运行$ pydoc modules即可查看 二.在python交 ...

  6. [Linux]系统管理: 进程管理(ps/top/pstree/kill/pkill), 工作管理, 系统资源查看, 系统定时任务

    进程管理:查看与终止 进程查看 1. 进程是正在执行的程序或命令. 2. 进程管理的作用: 判断服务器健康状态, 查看系统中所有进程 杀死进程 3. 查看系统中所有进程 ps aux    # 查看系 ...

  7. MIUI添加内存调试工具:查看进程中的Bitmap信息

    Android开发中的内存管理一直是令人头痛的事情.其中占用内存最大的一般是Bitmap.   在上周五发布的MIUI开发版中,我添加了查看内存里Bitmap信息的功能.大家开发app的时候可以使用这 ...

  8. 【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 ...

  9. 如何查看 Linux 中所有正在运行的服务

    有许多方法和工具可以查看 Linux 中所有正在运行的服务.大多数管理员会在 System V(SysV)初始化系统中使用 service service-name status 或 /etc/ini ...

随机推荐

  1. MongoDB 权限

    1.使用mongod 启动后(加入了--auth后操作数据库则需要权限) mongod --dbpath=D:\mongdb\db --logpath=D:\mongodb\log.txt --por ...

  2. 个人博客Week3

    必应软件客户端测评 话不多说 先来一张高大上的客户端界面截图! 首先 映入眼帘的就是四个主要的模块!(1)词典(2)例句(3)翻译(4)应用 (1)词典: 在查询词条的时候,一旦查询了一个词条就不能够 ...

  3. mysql概要(十二)事务

    1.特性 2.开启结束取消事务:需要选择支持事务的引擎 3,隐式提交事务: 4.事务的隔离级别:

  4. Javascript设计模式之创建构造函数和方法

    构造函数和方法 var Book = function (isbn,title,author) { this.setIsbn(isbn); this.setTitle(title); this.set ...

  5. (二)ubuntu学习前传—uboot常见命令

    1.uboot命令类似于linux行缓冲命令行,当我们向终端命令行输入命令的时候,这些命令没有立即被系统识别,而是被缓冲到一个缓存区(也就是系统认为我换没有输入完),当我们按下回车键(换行)后,系统就 ...

  6. 国内外常用的DNS服务器

    国内外常用的DNS服务器 DNS,全称Domain Name System,即域名解析系统,帮助用户在互联网上寻找路径,它在互联网的作用是把域名转换成为网络可以识别的IP地址. 国外DNS服务器地址: ...

  7. 【服务器环境搭建-Centos】Nginx1.9.9 安装(编译源码)

    nginx官网不同版本下载地址:http://nginx.org/download/ 我使用的是nginx-1.9.8.tar.gz 安装其他支持软件 可以使用rpm –q xxx   查询库是否已经 ...

  8. SenchaTouch介绍和Sencha Architect介绍以及安装

    一.SenchaTouch介绍 Sencha Touch框架是世界上第一个基于HTML 5的Mobile App框架. 在Sencha Touch这个名词中,包括了两个组成部分,其中Sencha的前身 ...

  9. OpenGL中各种坐标系的理解[转]

    OPENGL坐标系可分为:世界坐标系和当前绘图坐标系. 世界坐标系:在OpenGL中,世界坐标系是以屏幕中心为原点(0, 0, 0),且是始终不变的.你面对 屏幕,你的右边是x正轴,上面是y正轴,屏幕 ...

  10. cpu缓存与多线程

    一.cpu缓存结构 CPU速度远高于内存(即如果只考虑CPU和内存因素,程序的性能常常受到内存访问速度的限制,内存访问和运行),为了协调CPU和内存在速度上的差异,在CPU中增加了高速缓存.和计算机存 ...