Android实现固定头部信息,挤压动画(类似通讯录)
半年前,那时候我还是个大四的学生,每天都在找工作度过,想去北京体验一下蚁族生活,奋然离开了济南,哎...在济南我们学校还是数得着的好学校,去了北京就什么都不是了,一切的辛酸只有自己知道,那时候的我只找开发方面的工作,也第一次体会到了女生的劣势...
在找工作的过程中,大部分都是实习,跟我的预想有点冲突,去了XX集团,人家只要211,985的,没办法,去了XX工厂收到了类似通讯录的这么个任务...
废话少说,开始今天的主题
在很多应用中,看到这样的listview:listview滑动过程中分组标题固定在上方,当第二个组滑上来时,第一个组才跟着上滑,下一个组固定,直到该组也滑出上边缘。
有位大神们写的比较高深,可以去借鉴一下http://blog.csdn.net/guolin_blog/article/details/9033553
由于我比较菜鸟,所以方法比较简单,但实现的功能差不多,主要使用了git上的源码,直接拿来调用了
1.从github上下载源码,下载地址http://blog.csdn.net/guolin_blog/article/details/9033553
2.把PinnedHeaderListView中的library导入项目中
3.新建项目,并引用library
大概内容就这些,下面简单介绍一下代码:
1.在MainActivity的布局文件中加入以下代码:
给个小技巧,按住shift+ctrl+T,输入PinnedHeaderListView就能找到za.co.immedia.pinnedheaderlistview.PinnedHeaderListView,直接写进去就可以
<za.co.immedia.pinnedheaderlistview.PinnedHeaderListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent"/>
2.其实PinnedHeaderListView继承的ListView,所以用法也差不多,下一步就需要写Adapter了,个人习惯比较喜欢自定义,可以按照自己的想法来写,但是适配器要继承SectionedBaseAdapter
/** * */ package com.thea.pinnedsectiondemo.adapter; import java.util.List; import com.thea.pinnedsectiondemo.R; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; import za.co.immedia.pinnedheaderlistview.SectionedBaseAdapter; /** * @author thea * * 2014-10-16 */ public class MyPinnedListViewAdapter extends SectionedBaseAdapter{ private List<String> sectionList; private List<String> list; private Context context; public MyPinnedListViewAdapter(Context context,List<String> sectionList, List<String> list) { super(); this.sectionList = sectionList; this.list = list; this.context = context; } @Override public Object getItem(int section, int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int section, int position) { // TODO Auto-generated method stub return 0; } @Override public int getSectionCount() { // TODO Auto-generated method stub return sectionList.size(); } @Override public int getCountForSection(int section) { // TODO Auto-generated method stub return list.size(); } @Override public View getItemView(int section, int position, View convertView, ViewGroup parent) { ViewHold hold=null; if (convertView==null) { hold=new ViewHold(); convertView=LinearLayout.inflate(context, R.layout.list_item, null); hold.tv_item=(TextView) convertView.findViewById(R.id.tv_item); convertView.setTag(hold); } else { hold=(ViewHold) convertView.getTag(); } hold.tv_item.setText(list.get(position)); return convertView; } @Override public View getSectionHeaderView(int section, View convertView, ViewGroup parent) { ViewHold hold=null; if (convertView==null) { hold=new ViewHold(); convertView=LinearLayout.inflate(context, R.layout.section_item, null); hold.tv_section=(TextView) convertView.findViewById(R.id.tv_section_item); convertView.setTag(hold); } else { hold=(ViewHold) convertView.getTag(); } hold.tv_section.setText(sectionList.get(section)); return convertView; } class ViewHold{ private TextView tv_section,tv_item; } }
3.剩下的就是MainActivity,其实就跟ListView的使用都一样了,这里就不贴代码了
ok,完成
源码下载地址:http://download.csdn.net/detail/elinavampire/8047885
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。