文章目录
  1. 1. 使用

StickyListHeaders是一个带标题的ListView的带三方库

使用

在activity或Fragment的xml文件

1
2
3
4
<se.emilsjolander.stickylistheaders.StickyListHeadersListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

onCreate()onCreateView()中获取StickyListHeadersListView

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

同时要实现一个Adapter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
public class Mydapter extends BaseAdapter implements StickyListHeadersAdapter {
@Override
public int getCount(){
return content.length;
}

@Override
public Object getItem(int position) {
return content[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(content[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 = "" + content[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 content[position].subSequence(0, 1).charAt(0);
}

class HeaderViewHolder {
TextView text;
}

class ViewHolder {
TextView text;
}
}

文章目录
  1. 1. 使用