android树形列表实现
来源:互联网 发布:数据交换平台建设方案 编辑:程序博客网 时间:2024/06/03 21:04
一. 实现方法
1.列表中每项的布局文件
<?xmlversion="1.0"encoding="utf-8"?>
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:paddingTop="10dip"
android:paddingBottom="10dip">
<TextView
android:id="@+id/select_department_name"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:textSize="16dp"
android:gravity="center"
android:text="测试"
android:layout_alignParentLeft="true"
/>
<CheckBox
android:id="@+id/selectcheckbox"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
style="@style/DeptCheckboxTheme"
android:layout_marginRight="18dp"
/>
</RelativeLayout>
2.通过控制列表项中的每项与边的距离,例如用树形展示部门层级关系,可以在模型数据对象Department中根据层级level属性来动态调整
适配器中的关键代码
@Override
publicView getView(intposition, View convertView, ViewGroup parent) {
ViewHolder holder =null;
finalDepartmentelement = departments.get(position);
if(convertView ==null) {
holder =newViewHolder();
convertView =inflater.inflate(R.layout.select_department_item,null);
holder.checkBox= (CheckBox) convertView.findViewById(R.id.selectcheckbox);
holder.contentText= (TextView) convertView.findViewById(R.id.select_department_name);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
//根据层级属性动态调整边距
intlevel =element.getDepth();
if(level == 1){
holder.contentText.setPadding(
10,
holder.contentText.getPaddingTop(),
holder.contentText.getPaddingRight(),
holder.contentText.getPaddingBottom());
}else{
holder.contentText.setPadding(
indentionBase* (level),
holder.contentText.getPaddingTop(),
holder.contentText.getPaddingRight(),
holder.contentText.getPaddingBottom());
}
finalCheckBox checkBox = holder.checkBox;
checkBox.setOnCheckedChangeListener(newOnCheckedChangeListener() {
@Override
publicvoidonCheckedChanged(CompoundButton buttonView,booleanisChecked) {
isSelected.put(element.getId(), isChecked);
}
});
holder.contentText.setText(element.getName());
Boolean checked =isSelected.get(element.getId());
holder.checkBox.setChecked(checked==null?false:checked);
// if (element.isHasChildren() && !element.isExpanded()) {
//// holder.disclosureImg.setImageResource(R.drawable.arrow_close);
//// //这里要主动设置一下icon可见,因为convertView有可能是重用了"设置了不可见"的view,下同。
//// holder.disclosureImg.setVisibility(View.VISIBLE);
// } else if (element.isHasChildren() && element.isExpanded()) {
//// holder.disclosureImg.setImageResource(R.drawable.arrow_open);
//// holder.disclosureImg.setVisibility(View.VISIBLE);
// } else if (!element.isHasChildren()) {
//// holder.disclosureImg.setImageResource(R.drawable.arrow_close);
//// holder.disclosureImg.setVisibility(View.INVISIBLE);
// }
returnconvertView;
}
0 0
- android树形列表实现
- 树形列表实现方法
- 列表实现树形菜单
- android多级树形列表
- 更快实现Android多级树形选择列表
- 利用Treeview实现树形列表
- 利用Treeview实现树形列表
- 利用Treeview实现树形列表
- 利用Treeview实现树形列表
- [转贴]利用Treeview实现树形列表
- 在grid中实现树形列表
- javascript+css简单实现树形结构列表
- 实现树形下拉列表 GridView数据绑定
- asp.net实现树形下拉列表
- Android实现多层级Spinner列表选项实时更新树形层级
- Android实现多层级Spinner列表选项实时更新树形层级
- Android实现多层级Spinner列表选项实时更新树形层级
- 树形导航列表与菜单列表实现同步
- 7.AIDL简介
- 设计模式之工厂模式
- thinkphp实现商城后台无限级分类
- nvicat和eclipse自带的database explorer
- 8.版本控制svn和git
- android树形列表实现
- (转)Android Handler 主线程 子线程 双向通信
- InstantObjects是delphi上的一个不错的ORM框架,可以实现类似hibernate的功能。
- Python学习笔记(12)-装饰器详解
- 用二进制位运算 来判断一个数是奇数还是偶数
- 操作系统之 用户级线程与内核级线程
- errorlevel 续1
- 9.Handler消息机制
- 【Unity问题】当Unity导出文件不完整怎么办