无限层级的组织机构
2016-01-28 11:16
363 查看
项目中用到的 按照自己的想法做了一个 大家有好的想法来交流一下
项目地址:https://github.com/caoweiaaa/OrganizationLevel
效果图:
层级部分用是自定义一个LinearLayou
可像里面放入TextView,下面是ExpandableListView
LinearLayout中提供一个点击的接口和一个移除点击的位置之后的所有控件
数据是后台给的一个json ,项目中可以让后台给传这种格式的json 无限极扩展
项目地址:https://github.com/caoweiaaa/OrganizationLevel
效果图:
层级部分用是自定义一个LinearLayou
可像里面放入TextView,下面是ExpandableListView
LinearLayout中提供一个点击的接口和一个移除点击的位置之后的所有控件
package com.chs.organizationlevel.wedgit; import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.widget.LinearLayout; import com.chs.organizationlevel.R; /** * 作者:chs on 2015/12/31 15:24 * 邮箱:657083984@qq.com */ public class MyLinearLayout extends LinearLayout { private Context mContext; private OnItemClickListener onItemClickListener; public MyLinearLayout(Context context) { super(context); mContext = context; } public MyLinearLayout(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; } public interface OnItemClickListener{ void onItemClick(int position); } public void setOnItemClickListener(OnItemClickListener onItemClickListener) { this.onItemClickListener = onItemClickListener; } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { super.onLayout(changed, l, t, r, b); final int count = getChildCount(); for(int i = 0;i<count;i++){ View view = getChildAt(i); if(i>0){ LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(android.view.ViewGroup.LayoutParams.WRAP_CONTENT, android.view.ViewGroup.LayoutParams.MATCH_PARENT); layoutParams.setMargins(-40, 0, 0, 0); view.setLayoutParams(layoutParams); } if((count-i)==1){ view.setBackgroundResource(R.mipmap.organization_bg_blue); }else { view.setBackgroundResource(R.mipmap.organization_bg_gray); } final int finalI = i; view.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if(count>1&&(count-finalI)!=1){ onItemClickListener.onItemClick(finalI); } } }); } } public void removeView(int position){ int count = getChildCount(); int x = 0; for(int i = 0;i<count;i++){ View view = null; if(i>position){ view = getChildAt(i-x); removeView(view); x++; } } } }
数据是后台给的一个json ,项目中可以让后台给传这种格式的json 无限极扩展
相关文章推荐
- Android的ListView数据更新后,如何使最新的条目可以自动滚动到可视范围内
- Android 使用Gallery实现3D相册(附效果图+Demo源码)
- gulp插件
- Python3 - 时间处理与定时任务
- UITableViewRowAction -- UITableView的一些小技巧
- LEETCODE 10 Regular Expression Matching (JAVA题解)
- 零碎的数据结构与算法——Dijkstra双栈算数表达式求解
- Spring自定义配置Schema可扩展(一)
- glide
- Android从系统Gallery获取图片具体实现
- eclipse-jar包-乱码
- 关于android和gradle的环境搭建
- UIResponder简介
- MySQL 插入时间
- 关于iOS 7的开源项目
- Java反射教程-全面分析
- android权限
- 婚姻稳定性问题的模拟
- 2014年度最强AngularJS资源合集
- 支持不同的屏幕大小