Androidはヘッダ情報を固定し、動画を絞る(通信録のような)


半年前、私はまだ大学4年生で、毎日仕事を探して过ごしていました.北京に行って蟻族の生活を体験したいと思っていました.奋然済南を离れました.済南で私达の学校はやはり数えられる良い学校で、北京に行って何もなくて、すべての辛酸は自分で知っているだけで、その时の私はただ开発の方面の仕事を探して、初めて女子学生の劣勢を体得しました...
仕事を探す过程の中で、大部分はすべて実习で、私の予想と少し冲突して、XXグループに行って、人は211985のだけで、仕方がなくて、XX工场に行って通信录のこのような任务を受け取りました...
くだらないことは言わないで、今日のテーマを始めます.
多くのアプリケーションでは、このようなlistview:listviewスライド中にパケットタイトルが上に固定され、2番目のグループがスライドすると、1番目のグループが上にスライドし、次のグループも上縁からスライドするまで固定されるlistview:listviewスライドが見られます.
ある大神たちが書いたのは比較的に深くて、参考にすることができますhttp://blog.csdn.net/guolin_blog/article/details/9033553
私は菜鳥を比較しているので、方法は簡単ですが、実現する機能はあまり悪くなく、主にgitのソースコードを使って、直接呼び出しました.
1.githubからソースをダウンロードし、アドレスをダウンロードするhttps://github.com/JimiSmith/PinnedHeaderListView
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