Android学习小Demo(12)TodoList实现ListView的分组实现
很多情况下, 我们想要ListView上面展示的东西是可以分组的,比如联系人列表,国家列表啊,这样看起来数据的展现比较有层次感,而且也有助于我们快速定位到某一个具体的条目上,具体效果请看下图: 这是前面TodoList小demo的MainActivity,主要是来展现用户添加的任务的,在原来的基础上添加了分组的效果。 接下来我们具体来讲一下这个效果是怎么实现的。 这是利用开源库StickyListHeaders(传送门:https://github.com/emilsjolander/StickyListHeaders)来实现的,这个实现的效果是基于ListView的,而其实也有关于GridView而实现的分组的效果,大家可以参考一下xiaanming的博客(他的文章名字都很长。。。): Android 使用开源库StickyGridHeaders来实现带sections和headers的GridView显示本地图片效果 0)关于如何导进开源库,大家请参考:如何导进开源库StickyListHeaders 1)然后,我们要想清楚一件事情,即分组的ListView,是包含两部分:Header 和 Item,所以相对应的我们也要为其定义两个Layout,如下: 1.1)task_header.xml **[html]** [view plain](http://blog.csdn.net/linmiansheng/article/details/20747775#)[copy](http://blog.csdn.net/linmiansheng/article/details/20747775#)[](https://code.csdn.net/snippets/224769)[](https://code.csdn.net/snippets/224769/fork) <div> <embed id="ZeroClipboardMovie_1" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" type="application/x-shockwave-flash" width="18" height="18" align="middle" name="ZeroClipboardMovie_1"> </embed> </div> </div> - <span class="tag"><?</span><span class="tag-name">xml</span> <span class="attribute">version</span>=<span class="attribute-value">“1.0”</span> <span class="attribute">encoding</span>=<span class="attribute-value">“utf-8”</span><span class="tag">?></span> - <span class="tag"><</span><span class="tag-name">RelativeLayout</span> <span class="attribute">xmlns:android</span>=<span class="attribute-value">“http://schemas.android.com/apk/res/android”</span> - <span class="attribute">android:layout_width</span>=<span class="attribute-value">“match_parent”</span> - <span class="attribute">android:layout_height</span>=<span class="attribute-value">“match_parent”</span> - <span class="attribute">android:background</span>=<span class="attribute-value">“@drawable/header_selector”</span> <span class="tag">></span> - - <span class="tag"><</span><span class="tag-name">TextView</span> - <span class="attribute">android:id</span>=<span class="attribute-value">“@+id/tvHeader”</span> - <span class="attribute">android:layout_width</span>=<span class="attribute-value">“wrap_content”</span> - <span class="attribute">android:layout_height</span>=<span class="attribute-value">“match_parent”</span> - <span class="attribute">android:layout_gravity</span>=<span class="attribute-value">“start|left”</span> - <span class="attribute">android:padding</span>=<span class="attribute-value">“5dp”</span> - <span class="attribute">android:textColor</span>=<span class="attribute-value">“@android:color/white”</span> - <span class="attribute">android:textSize</span>=<span class="attribute-value">“17sp”</span> - <span class="attribute">android:textStyle</span>=<span class="attribute-value">“bold”</span> <span class="tag">/></span> - - <span class="tag"></</span><span class="tag-name">RelativeLayout</span><span class="tag">></span> 因为我们在Header上面只是展现一个日期,所以我们只需要一个TextView即可。 ...