【listview】pinned-section-listview应用 + 两种布局的listview
2015-07-27 11:09
316 查看
安卓手机的手机联系人的listview的滑动字母顶在顶部的效果,qq客户端联系人的效果也是这样。
github地址:https://github.com/beworker/pinned-section-listview
点击
![](http://img.blog.csdn.net/20150727104039209?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
下载后,里面的PinnedSectionListView.java就是要用的listview啦。
在他的github主页往下看,
这块就是用法啦。
第一点就是在布局文件用com.hb.views.PinnedSectionListView代替安卓自带的listview咯。
第二点:
自己写的
实现接口后,要重写isItemViewTypePinned方法,此处注释为:
意思是,要pin的行,该方法要返回true。(eg联系人的ABCD..字母行)
===========================================================================
接下来是两种布局的listview,此处借鉴:http://blog.csdn.net/wanghao200906/article/details/41693859?utm_source=tuicool 处的代码:
在此基础上加isItemViewTypePinned方法:
github地址:https://github.com/beworker/pinned-section-listview
点击
下载后,里面的PinnedSectionListView.java就是要用的listview啦。
在他的github主页往下看,
Usage
这块就是用法啦。第一点就是在布局文件用com.hb.views.PinnedSectionListView代替安卓自带的listview咯。
第二点:
自己写的
ListAdapter,要实现PinnedSectionListAdapter接口。
实现接口后,要重写isItemViewTypePinned方法,此处注释为:
// We implement this method to return 'true' for all view types we want to pin
意思是,要pin的行,该方法要返回true。(eg联系人的ABCD..字母行)
===========================================================================
接下来是两种布局的listview,此处借鉴:http://blog.csdn.net/wanghao200906/article/details/41693859?utm_source=tuicool 处的代码:
public class PlayAdapter extends BaseAdapter { /** * 标题的item */ public static final int ITEM_TITLE = 0; /** * 二级菜单的item */ public static final int ITEM_INTRODUCE = 1; private List<ViewItem> mList; private Context context; private LayoutInflater inflater; // 两个样式 两个holder class Holder1 { TextView play_title; Holder1(View view) { play_title = (TextView) view.findViewById(R.id.play_title); } } class Holder2 { TextView play_introduce_title; ImageView play_iv; Holder2(View view) { play_introduce_title = (TextView) view .findViewById(R.id.play_introduce_title); play_iv = (ImageView) view.findViewById(R.id.play_iv); } } public PlayAdapter(Context context, List<ViewItem> mList) { this.context = context; this.mList = mList; inflater = LayoutInflater.from(context); } @Override public int getCount() { // TODO Auto-generated method stub System.out.println("mList.size()" + mList.size()); return mList.size(); } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return mList.get(arg0); } //返回 代表某一个样式 的 数值 @Override public int getItemViewType(int position) { // TODO Auto-generated method stub return mList.get(position).type; } //两个样式 返回2 @Override public int getViewTypeCount() { // TODO Auto-generated method stub return 2; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return arg0; } @Override public View getView(int position, View convertView, ViewGroup parent) { int type = getItemViewType(position); Holder1 holder1 = null; Holder2 holder2 = null; System.out.println("getView " + position + " " + convertView + " type = " + type); if (convertView == null) { //选择某一个样式。。 switch (type) { case ITEM_TITLE: convertView = inflater.inflate(R.layout.play_item_title, null); holder1 = new Holder1(convertView); holder1.play_title.setText(mList.get(position).name); convertView.setTag(holder1); break; case ITEM_INTRODUCE: convertView = inflater.inflate(R.layout.paly_item_introduce, null); holder2 = new Holder2(convertView); holder2.play_introduce_title .setText(mList.get(position).address); convertView.setTag(holder2); break; default: break; } } else { switch (type) { case ITEM_TITLE: holder1 = (Holder1) convertView.getTag(); holder1.play_title.setText(mList.get(position).name); break; case ITEM_INTRODUCE: holder2 = (Holder2) convertView.getTag(); holder2.play_introduce_title .setText(mList.get(position).address); break; default: break; } } return convertView; } }
在此基础上加isItemViewTypePinned方法:
/* * PinnedSectionListAdapter#isItemViewTypePinned(int) This method must * return true for all view types which have to be pinned. * 确定哪个item是title,当item为需要固定的title时,返回true。 */ @Override public boolean isItemViewTypePinned(int viewType) { // TODO Auto-generated method stub return (viewType == 1 ? true : false); }
相关文章推荐
- Ubuntu14.04建立WIF热点供手机和平板上网
- iOS利用Runtime自定义控制器POP手势动画
- Java线程池
- RabbitMQ配置文件
- HDU 4278 - Faulty Odometer
- 电话薄
- JRTPLib的编译步骤
- Android面试宝典(一位优秀应届生面试经验,很多Android高阶问题)
- 面试题 ——— 二维数组的查找
- 编程经验
- 深入javascript: in 和 delete 运算符
- LeeCode(Database)-Combine Two Tables
- 运行该脚本出现/bin/sh^M: bad interpreter: No such file or directory
- 很好的客户端后台博客
- 【MYSQL】导入中文后乱码问题
- 使用fiddler修改请求和响应
- 如何在Eclipse中查看Java类库的源代码以及相应的api
- 获取手机屏幕的宽高
- 认识与入门 Markdown
- 图灵机器人