Android StickyListHeaders实现电话本列表效果

发布时间 - 2026-01-11 01:24:49    点击率:

本文实例为大家分享了StickyListHeaders电话本列表效果的具体代码,供大家参考,具体内容如下

效果展示

布局文件

与listview使用方式一样,可以在布局文件中直接进行使用

核心代码

oncreat方法

在oncreat方法中初始化控件,并为控件设置数据适配器

StickyListHeadersListView stickyList = (StickyListHeadersListView) findViewById(R.id.list);
MyAdapter adapter = new MyAdapter(this);
stickyList.setAdapter(adapter);

设置数据适配器

在设置数据适配器的时候,需要先继承BaseAdapter,然后实现StickyListHeadersAdapter接口,最后实现里面为实现的方法

public class MyAdapter extends BaseAdapter implements StickyListHeadersAdapter {

private String[] countries;
private LayoutInflater inflater;

public MyAdapter(Context context) {
 inflater = LayoutInflater.from(context);
 countries = context.getResources().getStringArray(R.array.countries);
}

@Override
public int getCount() {
 return countries.length;
}

@Override
public Object getItem(int position) {
 return countries[position];
}

@Override
public long getItemId(int position) {
 return position;
}

@Override 
public View getView(int position, View convertView, ViewGroup parent) {
 ViewHolder holder;

 if (convertView == null) {
  holder = new ViewHolder();
  convertView = inflater.inflate(R.layout.test_list_item_layout, parent, false);
  holder.text = (TextView) convertView.findViewById(R.id.text);
  convertView.setTag(holder);
 } else {
  holder = (ViewHolder) convertView.getTag();
 }

 holder.text.setText(countries[position]);

 return convertView;
}

@Override 
public View getHeaderView(int position, View convertView, ViewGroup parent) {
 HeaderViewHolder holder;
 if (convertView == null) {
  holder = new HeaderViewHolder();
  convertView = inflater.inflate(R.layout.header, parent, false);
  holder.text = (TextView) convertView.findViewById(R.id.text);
  convertView.setTag(holder);
 } else {
  holder = (HeaderViewHolder) convertView.getTag();
 }
 //set header text as first char in name
 String headerText = + countries[position].subSequence(0, 1).charAt(0);
 holder.text.setText(headerText);
 return convertView;
}

@Override
public long getHeaderId(int position) {
 //return the first character of the country as ID because this is what headers are based upon
 return countries[position].subSequence(0, 1).charAt(0);
}

class HeaderViewHolder {
 TextView text;
}

class ViewHolder {
 TextView text;
}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# StickyListHeaders  # 电话本  # 列表效果  # Android实现联动下拉框 下拉列表spinner的实例代码  # android二级listview列表实现代码  # android 支持的语言列表(汇总)  # Android uses-permission权限列表中文注释版  # Android通过LIstView显示文件列表的两种方法介绍  # Android ExpandableListView展开列表控件使用实例  # Android实现获取应用程序相关信息列表的方法  # android开发教程之使用listview显示qq联系人列表  # Android用ListView显示SDCard文件列表的小例子  # Android列表实现(3)_自定义列表适配器思路及实现代码  # 并为  # 大家分享  # 具体内容  # 大家多多  # setAdapter  # adapter  # StickyListHeadersAdapter  # BaseAdapter  # MyAdapter  # findViewById  # stickyList  # list  # id  # public  # inflater  # LayoutInflater  # context 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 装修招标网站设计制作流程,装修招标流程?  千库网官网入口推荐 千库网设计创意平台入口  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  Angular 表单中正确绑定输入值以确保提交与验证正常工作  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  高防服务器:AI智能防御DDoS攻击与数据安全保障  EditPlus中的正则表达式 实战(4)  微信公众帐号开发教程之图文消息全攻略  活动邀请函制作网站有哪些,活动邀请函文案?  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  PHP正则匹配日期和时间(时间戳转换)的实例代码  如何在 React 中条件性地遍历数组并渲染元素  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  如何用JavaScript实现文本编辑器_光标和选区怎么处理  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  Android中AutoCompleteTextView自动提示  如何快速生成专业多端适配建站电话?  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  历史网站制作软件,华为如何找回被删除的网站?  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  Laravel如何升级到最新版本?(升级指南和步骤)  网站制作报价单模板图片,小松挖机官方网站报价?  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  jQuery validate插件功能与用法详解  Laravel如何实现模型的全局作用域?(Global Scope示例)  利用vue写todolist单页应用  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  如何制作一个表白网站视频,关于勇敢表白的小标题?  JS弹性运动实现方法分析  实例解析Array和String方法  原生JS获取元素集合的子元素宽度实例  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  如何自定义建站之星模板颜色并下载新样式?  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  html5的keygen标签为什么废弃_替代方案说明【解答】  高端建站如何打造兼具美学与转化的品牌官网?  html如何与html链接_实现多个HTML页面互相链接【互相】  魔方云NAT建站如何实现端口转发?  node.js报错:Cannot find module 'ejs'的解决办法  香港服务器选型指南:免备案配置与高效建站方案解析