文档章节

析:自定义适配器实现Grid View和Gallery碰到到问题。

垂盆草
 垂盆草
发布于 2012/08/18 13:34
字数 1248
阅读 218
收藏 0

在: http://www.oschina.net/code/snippet_151287_9426上学习grid view,不过做学习代码到过程中碰到一下问题:

1.运行起来之后,APP会异常结束;

2.copy数据到模拟终端到sdcard中;

问题1.运行起应用程序之后,

点击两种模式,都会出现应用程序异常退出到问题。debug发现:

File file=new File(path); 

通过path new出来到file是访问是空指针,也就回出现空指针异常。

通过咨询原作者说明,那是访问图片在Sdcard中图片到位置。

参考当前到情况,我并没有在模拟器并没有sdcard卡,所以sdcard也没有任何东西。所以会出现上面到问题。

下面新到问题就出现了:

1-1)如果增加sdcard卡到模拟器;

1-2)如何copy 图片等信息到模拟到模拟器;

不论是听MP3音乐或是浏览图片,Android手机的保存媒介就是常用的Micro SD存储卡。若想在Android仿真器播放音乐或者看数位相片,就必须先仿真出SD存储卡,并让Android仿真器能够访问仿真出来的SD存储卡。Android SDK组件的tools目录里,除了emulator这个运行文件外,另外放置mksdcard这个程序,它可以仿真出您所需要的SD存储卡空间,例如使用mksdcard指令仿真出1 GB的存储卡,指令如下:


  
  1. mksdcard 1024M sdcard.img 

经过一小段的硬盘读取时间后,就会在Android SDK tools/ 目录下生成一个文件大小为1GB的sdcard.img文件,也可以依照自己的需要更改1 024 MB为其他数字,制造出自己所需的存储卡大小,例如4 096 MB (4 GB) 或8 192 MB (8 GB)。然后我们以emulator指令启动Android仿真器时,必须添加-sdcard参数指定该sdcard.img存储卡文件,就可以让Android仿真器拥有插入SD存储卡到T-Mobile G1手机的仿真效果。


  
  1. emulator -sdcard sdcard.img 

3.2.1  adb+push上载文件到SD存储卡

使用Android仿真器加上-sdcard指令装入SD存储卡后,似乎一切都没有发生。其实不然,Android是Linux操作系统的一种,它将SD存储卡挂接(mount)在系统的/sdcard目录中,我们要访问SD存储卡,是无法直接在Android emulator的手机中来完成的,Android的仿真器并没有资源管理器可以做一般操作系统上的复制删除文件动作,一切必须靠adb (Android Debug Bridge) 指令来完成。现在必须开启另外一个终端机窗口,然后运行Android SDK tools目录底下的adb指令加上push参数,将计算机中的文件复制到刚刚制作好的SD存储卡图像档中,指令如下:


  
  1. adb push 001.jpg /sdcard            (复制001.jpg文件到 /sdcard 目录下)  
  2. adb push pictures /sdcard           (复制pictures照片目录到 /sdcard 目录下)  
  3. adb push mp3 /sdcard                (复制mp3音乐目录到 /sdcard 目录下) 

复制好文件后,您必须运行adb shell指令进入Android系统,然后使用Linux系统的ls与cd指令浏览/sdcard存储卡文件。


  
  1. adb shell                       (Android仿真器启动命令列模式)  
  2. # cd /sdcard                        (进入 /sdcard目录)  
  3. # ls                            (查看SD存储卡中的文件) 

如果成功的话,则已经将计算机中的文件复制到Android系统的SD存储卡了。现在使用Android仿真器启动手机里的Gallery图片浏览程序是不是已经看到刚刚已经加载的图片了,或是使用Music音乐播放程序,也可以直接看到加载的MP3音乐了,如图3-14所示,而不会再显示 no SD card了。如果还是显示no SD card或是抓不到信息的话,请关掉仿真器,重新运行emulator -sdcard sdcard.img,就可以正确抓到SD存储卡内的文件了。

按照上面描述的方法,就可以把这个APP所需要到图片都copy到sdcard目录下面。

所以也就先修改程序中一处: path="/sdcard/"; 把地址写死了,先验证功能之后,再说了。

修改之后,重新运行,仍然回出现异常。从eclipse的打印到log中知道,访问到仍然有空指针的问题。不过问题出在:

   Bitmap bm=BitmapFactory.decodeFile(f.getPath(), opt);(bm为空指针!)

   imageMaps.put(i, bm);

还好总算是进步了,发现访问到其中一个不是图片的文件的f.getpath(),decode之后bm是NULL。

这里应该是属于代码健壮性到问题。

所以,证据了过滤条件:

String ss = ".jpg";   //测试使用,只关心.jpg格式到文件。

for(int i=0;i<files.length;i++){

File f=files[i];

if (-1 != f.getPath().indexOf(ss))

{

   Bitmap bm=BitmapFactory.decodeFile(f.getPath(), opt);

   imageMaps.put(i, bm);

}

}

这样总算OK了,修正这些问题之后,感觉挺有受收获的。谢谢原作者。


© 著作权归作者所有

垂盆草
粉丝 11
博文 74
码字总数 16426
作品 0
合肥
私信 提问
续:自定义适配器实现Grid View和Gallery碰到到问题。

通过(析:自定义适配器实现Grid View和Gallery碰到到问题。)的努力:终于可以让应用程序在模拟器上面正常运行起来。 现在就有些贪心了,想让这个应用能在我的宝贝android手机上运行! 按照...

垂盆草
2012/08/18
200
0
Android 滑动效果基础篇(四)—— Gallery + GridView

Android系统自带一个GridView和Gallery两个控件,GridView网格显示,Gallery单个浏览,两者结合起来可以真正实现Gallery浏览图片效果。 本示例通过GridView和Gallery两个控件,模仿实现一个完...

长平狐
2013/01/06
271
0
自定义 Gallery 与 AsyncTask

@邓凡平 你好,想跟你请教个问题:自定义了一个可以缩放图片的Gallery , Gallery 中显示的每个图片先要从网络用 AsyncTask 下载。问题是:用AsyncTask下载到图片后,setImageBitmap给Galle...

Jnyang
2012/08/17
1K
5
android幻灯片效果实现-Gallery

最近下载几款手机应用研究了下,发了有些自定义控件惊人的相似,所以我觉得在以后的开发中,对一些控件的复用肯定是很多的,在首页(非载入页)一般都会有一个幻灯片效果,既可以放广告也可以...

zhoulc
2013/06/23
10.6K
0
Android BaseAadapter 异步加载图片方法

BaseAdapter就Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到像ListView、Spinner、Gallery及GridView等UI显示组件,它是继承自接口类Adapter, 1、Adapter类简介...

jackxu2015
2015/08/14
200
0

没有更多内容

加载失败,请刷新页面

加载更多

Jquery操作UI之设置字体大小

先获取字体大小,进行处理。再将修改的值保存。 slice() 方法可从已有的数组中返回选定的元素。 arrayObject.slice(start,end)。 start 必需。规定从何处开始选取。如果是负数,那么它规定从...

前端老手
12分钟前
4
0
如何在Ubuntu中用UFW配置防火墙

UFW,即简单防火墙(uncomplicated firewall),是一个 Arch Linux、Debian 或 Ubuntu 中管理防火墙规则的前端。 UFW 通过命令行使用(尽管它有可用的 GUI),它的目的是使防火墙配置简单(即不复...

SuShine
16分钟前
3
0
Caffeine缓存

简介 在本文中,我们来看看 Caffeine — 一个高性能的 Java 缓存库。 缓存和 Map 之间的一个根本区别在于缓存可以回收存储的 item。 回收策略为在指定时间删除哪些对象。此策略直接影响缓存的...

xiaolyuh
17分钟前
2
0
springmvc - 通过DeferredResult实现长轮询服务端推送消息

DeferredResult字面意思就是推迟结果,是在servlet3.0以后引入了异步请求之后,spring封装了一下提供了相应的支持,也是一个很老的特性了。DeferredResult可以允许容器线程快速释放以便可以接...

细肉云吞
22分钟前
3
0
零拷贝(zerocopy)三张图

核心概念: 用户空间+内核空间+磁盘硬件 1.最原始的BIO场景下IO操作流程。 读取磁盘上的文件,然后经过网络,将文件发送到另外一个磁盘的过程。4次上下文切换,2次文件复制。 1、JVM发出rea...

指尖Coding
33分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部