標籤:pinnedheaderlistview 擠壓動畫 固定頭部資訊
半年前,那時候我還是個大四的學生,每天都在找工作度過,想去北京體驗一下蟻族生活,奮然離開了濟南,哎...在濟南我們學校還是數得著的好學校,去了北京就什麼都不是了,一切的辛酸只有自己知道,那時候的我只找開發方面的工作,也第一次體會到了女生的劣勢...
在找工作的過程中,大部分都是實習,跟我的預想有點衝突,去了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;}@Overridepublic Object getItem(int section, int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int section, int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic int getSectionCount() {// TODO Auto-generated method stubreturn sectionList.size();}@Overridepublic int getCountForSection(int section) {// TODO Auto-generated method stubreturn list.size();}@Overridepublic 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;}@Overridepublic 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
Android實現固定頭部資訊,擠壓動畫(類似通訊錄)