Android使用开源库StickyGridHeaders来实现带部分和标题的显示数据表格显示本地图片效果

  

大家好!过完年回来到现在差不多一个月没写文章了,一是觉得不知道写哪些方面的文章,没有好的题材来写,二是因为自己的一些私事给耽误了,所以过完年的第一篇文章到现在才发表出来,2014年我还是会继续在CSDN上面更新我的博客,欢迎大家关注一下,今天这篇文章主要的是介绍下开源库StickyGridHeaders的使用,StickyGridHeaders是一个自定义显示数据表格带部分和标题的Android库,就部分是显示数据表格项之间的分隔,头就是固定在显示数据表格顶部的标题,类似一些安卓手机联系人的效果,StickyGridHeaders的介绍在https://github.com/TonicArtos/StickyGridHeaders,与此对应也有一个相同效果的自定义ListView带部分和标题的开源库https://github.com/emilsjolander/StickyListHeaders,大家有兴趣的可以去看下,我这里介绍的是StickyGridHeaders的使用,我在Android应用方面看到使用StickyGridHeaders的不是很多,而是在Iphone上看到相册采用的是这种效果,于是我就使用StickyGridHeaders来仿照Iphone按照日期分隔显示本地图片

我们先新建一个Android项目StickyHeaderGridView,去https://github.com/TonicArtos/StickyGridHeaders下载开源库,为了方便浏览源码我直接将源码拷到我的工程中了

 Android使用开源库StickyGridHeaders来实现带部分和标题的显示数据表格显示本地图片效果”> <br/> </p> <p> com.tonicartos.widget.stickygridheaders这个包就是我放StickyGridHeaders开源库的源码,com.example。stickyheadergridview这个包是我实现此功能的代码,类看起来还蛮多的,下面我就一一来介绍了<br/> </p> <p> GridItem用来封装StickyGridHeadersGridView每个项的数据,里面有本地图片的路径,图片加入手机系统的时间和headerId </p> <pre class=包com.example.stickyheadergridview;/* *   * @blog http://blog.csdn.net/xiaanming   *   * @author xiaanming   *   */公开课GridItem {/* *   *图片的路径   */私人字符串路径;/* *   *图片加入手机中的时间,只取了年月日   */私人时间字符串;/* *   *每个项目对应的HeaderId   */私人int headerId;   公共GridItem(字符串,字符串时间){   超级();   这一点。路径=路径;   这一点。时间=时间;   }      公共字符串getPath () {   返回路径;   }   公共空间setPath (String路径){   这一点。路径=路径;   }   公共字符串取得时间(){   返回时间;   }   公共空间凝固时间(String) {   这一点。时间=时间;   }   公共int getHeaderId () {   返回headerId;   }   公共空间setHeaderId (int headerId) {   这一点。headerId=headerId;   }      }

包com.example.stickyheadergridview;
  进口android.content.ContentResolver;
  进口android.content.Context;
  进口android.content.Intent;
  进口android.database.Cursor;
  进口android.net.Uri;
  进口android.os.Environment;
  进口handler;
  进口android.os.Message;
  进口android.provider.MediaStore;/* *
  *图片扫描器
  *
  * @author xiaanming
  *
  */公开课映象{
  私人上下文mContext;
  
  公共映象(上下文语境){
  这一点。mContext=上下文;
  }/* *
  *利用ContentProvider扫描手机中的图片,将扫描的光标回调到ScanCompleteCallBack
  *接口的scanComplete方法中,此方法在运行在子线程中
  */公共空间scanImages(最终ScanCompleteCallBack回调){
  最终处理程序mHandler=new处理程序(){
  @Override
  公共空间handleMessage(消息味精){
  super.handleMessage(味精);
  callback.scanComplete((光标)msg.obj);
  }
  };
  
  新线程(新Runnable () {
  @Override
  公共空间run () {//先发送广播扫描下整个sd卡
  mContext。sendBroadcast(新意图(
  Intent.ACTION_MEDIA_MOUNTED,
  Uri。解析(“文件://? Environment.getExternalStorageDirectory ())));
  
  Uri mImageUri=MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
  ContentResolver mContentResolver=mContext.getContentResolver ();
  
  光标mCursor=mContentResolver。查询(mImageUri,空,空,空,MediaStore.Images.Media.DATE_ADDED);//利用处理器通知调用线程
  消息味精=mHandler.obtainMessage ();
  味精。obj=mCursor;
  mHandler.sendMessage(味精);
  }
  }) .start ();
  }/* *
  *扫描完成之后的回调接口
  *
  */公共静态界面ScanCompleteCallBack {
  公共空间scanComplete(鼠标光标);
  }
  }

Android使用开源库StickyGridHeaders来实现带部分和标题的显示数据表格显示本地图片效果