zoukankan      html  css  js  c++  java
  • 无限层级的组织机构

    项目中用到的 依照自己的想法做了一个 大家有好的想法来交流一下

    项目地址: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 无限极扩展


  • 相关阅读:
    数据库之主表、从表、主键、外键
    eclipse编写js代码没有提示
    思维导图xmind的使用方法
    整理一下Apache与Tomcat的关系
    全栈开发者,一个很好的自学编程网站
    svn文件被锁不能提交的解决办法
    在SQL Server数据库中执行存储过程很快,在c#中调用很慢的问题
    php安装redis扩展
    PHP点击按钮拷贝
    PHP文件下载
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/7256356.html
Copyright © 2011-2022 走看看