仿微信通讯录列表
来源:互联网 发布:淘宝上卖篮球鞋的店铺 编辑:程序博客网 时间:2024/05/22 06:31
自己项目中需要做一个通讯录,单是和微信不一样,微信通讯录头部的几列好像是固定的,但是项目中的头部是群组管理,是动态的,对其联系人还需要做首字母排序,效果倒是很容易做出来,但是这里只能放一个listview,不然list就不能实现随侧边栏字母滑动查找,所以自己想了个办法
分享一下,同时也是复习,希望看到的童鞋有帮助
首先我重写了listview,在listview的头部添加了一个listview(注意:头部的list是添加到父list的第一行中,即position=0)
- public class DrawListView extends ListView {
- private Context context;
- private LinearLayout llList;
- public LineListView topList;
- public DrawListView(Context context) {
- super(context);
- // TODO Auto-generated constructor stub
- this.context = context;
- }
- public DrawListView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- // TODO Auto-generated constructor stub
- this.context = context;
- initUI();
- }
- public DrawListView(Context context, AttributeSet attrs) {
- super(context, attrs);
- // TODO Auto-generated constructor stub
- this.context = context;
- initUI();
- }
- private void initUI() {
- // TODO Auto-generated method stub
- llList = (LinearLayout) LayoutInflater.from(context).inflate(
- R.layout.top_layout, null);
- addHeaderView(llList);
- topList = (LineListView) llList.findViewById(R.id.top_list);
- }
- }
其中头部是linelistview(简单是自适应高度listview),这个就是父list头部的list用来做群组管理的
- public class LineListView extends ListView {
- public LineListView(Context context) {
- super(context);
- // TODO Auto-generated constructor stub
- }
- public LineListView(Context context, AttributeSet attrs) {
- super(context, attrs);
- // TODO Auto-generated constructor stub
- }
- public void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
- int mExpandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
- super.onMeasure(widthMeasureSpec, mExpandSpec);
- }
- }
在activity中使用:
其实也很简单,分别给对应的listview都加上监听器,经过测试发现没有问题,只是操作父list的时候要注意,他的第一行被子list给占了,不能用来显示数据
所以父list在获取数据的时候,请记得position-1(自己调试一下就知道了)
- public class MainActivity extends Activity {
- private DrawListView dlist;
- private ListAdapter lAdapter;
- private ListAdapter tAdapter;
- private String[] names = new String[] { "路飞", "乔巴", "索隆", "山治", "娜美", "罗宾",
- "乌索普", "布鲁克", "香克斯", "罗杰", "艾斯", "桑尼号", "梅丽号", "弗兰奇", "多福朗明哥" };
- private String[] lol = new String[] { "好运姐", "锤石", "金克斯", "阿狸", "猴子", "盖伦",
- "皇子", "盲僧", "日女", "豹女", "刀妹", "刀锋", "安妮", "男枪", "女警", "鳄鱼", "炮娘",
- "提莫", "慎", "赵信", "VN", "断头台", "风女", "莫甘娜", "妖姬", "&猪女", "%炸弹人",
- "*寒冰", "蛮子" };
- private List<String> l1 = new ArrayList<String>();
- private List<String> l2 = new ArrayList<String>();
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- dlist = (DrawListView) findViewById(R.id.list);
- dlist.setOnItemClickListener(new OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view,
- int position, long id) {
- // TODO Auto-generated method stub
- Toast.makeText(MainActivity.this, l1.get(position-1), Toast.LENGTH_SHORT).show();
- }
- });
- getData();
- lAdapter = new ListAdapter(this, l1);
- dlist.setAdapter(lAdapter);
- tAdapter = new ListAdapter(this, l2);
- dlist.topList.setAdapter(tAdapter);
- dlist.topList.setOnItemClickListener(new OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view,
- int position, long id) {
- // TODO Auto-generated method stub
- Toast.makeText(MainActivity.this, l2.get(position), Toast.LENGTH_SHORT).show();
- addData();
- tAdapter.notifyDataSetChanged();
- }
- });
- }
- private void getData() {
- for (int i = 0; i < names.length; i++) {
- l1.add(names[i]);
- }
- for (int i = 0; i < lol.length; i++) {
- l2.add(lol[i]);
- }
- }
- private void addData(){
- l1.add("我才是老大,懂?");
- l2.add("我才是老大,懂?");
- }
- }
简单的实现了在listview的头部加了个listview,这样listview就可以适应通讯录的侧边栏滑动到具体的字母排序的地方
Demo下载http://download.csdn.net/detail/u011440404/7784331
0 0
- 仿微信通讯录列表
- 通讯录列表
- 通讯录列表
- 通讯录列表
- Android ListView字母索引(仿微信通讯录列表)
- 自己现实的仿微信通讯录列表
- Android 仿微信通讯录列表侧边栏
- Android仿微信通讯录:悬停头部分组列表
- 通讯录列表界面
- ListView列表显示通讯录
- 类似通讯录的列表
- 检索通讯录列表
- 高仿微信通讯录列表
- iOS开发:通讯录之通讯录列表实现
- weiyi通讯录(三)仿微信下拉列表和android样式
- Android 仿微信通讯录列表侧边栏(2)
- android 获取通讯录记录列表
- android 获取通讯录记录列表
- 个人开发工具汇总
- 黑马程序员——java基础----集合框架知识点总结(一)
- 跟着实例学习ZooKeeper的用法: 临时节点
- TortoiseSVN中Branching和Merging实践
- Perl计数器
- 仿微信通讯录列表
- Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法
- 第十二周 阅读程序 虚基类 中的继承
- 51--步进电机驱动代码
- 集合框架(六)探究如何使用以及何时使用ArrayList或LinkedList来存储元素
- 几种最短路径算法的思考
- 好感?喜欢?爱?我不知道,我到底对你是哪种?可是你一直在我心底,从未离开
- 从链接、存储的角度去理解编译器对关键字的处理(static、extern等)
- php学习第二章:字符串处理函数(二)字符串查找、替换、截取等