依赖
gethub链接地址
布局
adapter
//实现StickyListHeadersAdapter
private class PmAdapter extends BaseAdapter implements StickyListHeadersAdapter {
//重写getcount()
@Override
public int getCount() {
}
//重写getitem
@Override
public ProcessInfo getItem(int position) {
return mInfos.get(position);
}
//重写getItemId()
@Override
public long getItemId(int position) {
return 0;
}
//重写getHeaderView—返回对应的头布局
/**
* 2. * 给每一条数据返回一个对应的 头布局的view 相同的组返回的相同
* 3.
*/
@Override
public View getHeaderView(int position, View convertView,
ViewGroup parent) {
if (convertView == null) {
convertView = new TextView(getApplicationContext());
}
// 获取一条数据bean
ProcessInfo info = getItem(position);
TextView tv = (TextView) convertView;
tv.setTextColor(Color.BLACK);
tv.setBackgroundColor(Color.parseColor("#CECFCE"));
tv.setPadding(6, 6, 6, 6);
if (info.isSys) {
tv.setText("系统进程(" + mSysInfos.size() + ")个");
} else {
tv.setText("用户进程(" + mUserInfos.size() + ")个");
}
return convertView;
}
//重写getHeaderId()—分组—有多少条目执行多少次(条目和上个条目分组不一样才添加分隔条目)
@Override
public long getHeaderId(int position) {
//获取数据 给每一条数据返回一个 long 值 代表不同的分组
return info.isSys ? 0 : 1;
}
//重写getview
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// 普通数据
ViewHolder viewHolder;
if (convertView == null) {
// 缓存view是空的 生成新的布局view
convertView = View.inflate(getApplicationContext(), R.layout.item_pm, null);
viewHolder = new ViewHolder();
// 获取所有的控件 放到viewHolder里
viewHolder.ivIcon = (ImageView) convertView
.findViewById(R.id.iv_ip_icon);
// 把viewHolder存到convertView里
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
// 赋值
return convertView;
}
}
static class ViewHolder {
ImageView ivIcon;
TextView tvName;
TextView tvMemSize;
CheckBox mCb;
}