StickyListHeadersListView的使用
来源:互联网 发布:c wpf 数据绑定 编辑:程序博客网 时间:2024/05/17 00:28
先上图
布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.simple.headview.MainActivity"> <se.emilsjolander.stickylistheaders.StickyListHeadersListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="match_parent" /></RelativeLayout>
- Activity类
public class MainActivity extends AppCompatActivity{ private StickyListHeadersListView lv; private HeadAdapter adapter; private List<ItemBeam> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (StickyListHeadersListView) findViewById(R.id.lv); //添加数据 list = new ArrayList<ItemBeam>(); for (int i = 0; i < 10; i++) { ItemBeam bean = new ItemBeam(); bean.setValue("bb"); list.add(bean); } for (int i = 0; i < 10; i++) { ItemBeam bean = new ItemBeam(); bean.setValue("aa"); list.add(bean); } for (int i = 0; i < 13; i++) { ItemBeam bean = new ItemBeam(); bean.setValue("dd"); list.add(bean); } for (int i = 0; i < 17; i++) { ItemBeam bean = new ItemBeam(); bean.setValue("cc"); list.add(bean); } //设置id,为了能够获取head的id int headId = 0; Map<String, Integer> map = new HashMap<>(); for (ItemBeam bean2 : list) { String value = bean2.getValue(); if (!map.containsKey(value))//如果这个实体对象在map里面没有这个value对应的key,就给实体对象 { //设置id,并存到map中 bean2.setId(headId); map.put(value, headId); headId++; } else {//如果有就直接设置id,这样不同的实体对象就对应不同的id bean2.setId(map.get(value)); } } //排序 Collections.sort(list, new Comparator<ItemBeam>() { @Override public int compare(ItemBeam lhs, ItemBeam rhs) { return lhs.getValue().compareTo(rhs.getValue()); } }); adapter = new HeadAdapter(this, list); lv.setAdapter(adapter); }}
- 适配器类
public class HeadAdapter extends BaseAdapter implements StickyListHeadersAdapter{ private Context ctx; private List<ItemBeam> list; public HeadAdapter(Context context , List<ItemBeam> list){ this.ctx = context; this.list = list; } //初始化head布局,这里只是为了实现功能,项目中还是要用ViewHolder封装下更节约资源 @Override public View getHeaderView(int position, View convertView, ViewGroup parent) { TextView tv = new TextView(ctx); tv.setText(list.get(position).getValue()); tv.setBackgroundColor(Color.RED); return tv; } //获取headView的id @Override public long getHeaderId(int position) { return list.get(position).getId(); } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } //这里只是为了实现功能,项目中还是要用ViewHolder封装下更节约资源 @Override public View getView(int position, View convertView, ViewGroup parent) { TextView tv = new TextView(ctx); tv.setText(list.get(position).getValue()); return tv; }}
- 实体类
public class ItemBeam{ private String value; private int id; public void setId(int id) { this.id = id; } public void setValue(String value) { this.value = value; } public String getValue() { return value; } public int getId() { return id; }}
0 0
- StickyListHeadersListView的使用
- android实现通讯录分组StickyListHeadersListView的使用
- 仿抽屉式的ListView-StickyListHeadersListView的使用
- XRefreshView嵌套StickyListHeadersListView问题
- listview滑动顶部停靠(stickyListHeadersListView)
- Android 开源库StickyListHeadersListView来实现ListView列表分组效果
- 安卓学习笔记-StickyListHeadersListView框架(自动分栏)
- android中仿<饿了么>listview与stickylistheaderslistview联动
- GUID使用的使用
- ${}的使用
- 的使用
- @[],@()的使用
- ->的使用
- +、-、*、/、%的使用
- &&的使用
- %:的使用
- Makefile中使用$$的使用
- Makefile中使用$$的使用
- leetcode -- Valid Number -- Math难题,要用自动机,可以先不看
- 电子邮件SMTP协议原始命令码和工作原理
- 四年今日
- UIDatePicker的用法:最小日期和最大日期
- Java多线程、并发基础面试知识汇总
- StickyListHeadersListView的使用
- 用户空间和内核空间通讯之【Netlink 下】
- CoOS使用教程——软件定时器
- Android 安装 Linux(ubuntu)记录笔记
- Machine Learning机器学习 - Supervised Learning监督学习 - Native Bayes
- Spring scope详解
- 电子邮件SMTP协议原始命令码和工作原理
- 欢迎使用CSDN-markdown编辑器
- 机器学习基石第二次作业