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

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

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

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

问题1.运行起应用程序以后,测试

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

File file=new File(path); 
操作系统

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

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

参考当前到状况,我并无在模拟器并无sdcard卡,因此sdcard也没有任何东西。因此会出现上面到问题。指针

下面新到问题就出现了:code

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了,修正这些问题以后,感受挺有受收获的。谢谢原做者。

相关文章
相关标签/搜索