几天前,我们曾经讨论如何 如何在不同的 PHP 版本之间进行切换 。在那篇文章中,我们使用 update-alternatives 命令实现从一个 PHP 版本切换到另一个 PHP 版本。...alt 是一个命令行工具,可以让你在类 Unix 系统中切换相同程序的不同版本。该工具简单易用,是 Rust 语言编写的自由、开源软件。 安装 安装 alt 工具十分简单。...使用 alt 工具在 Linux 系统中切换相同程序的不同版本 如我之前所述,alt 只影响当前目录。换句话说,当你进行版本切换时,只在当前目录生效,而不是整个系统范围。 下面举例说明。...PS:下面看下linux 不同java版本之间的切换 最近因为经常要使用jdk7和jdk8 所以需要手动切换jdk 在同时安装好jdk7和jdk8后 终端输入 $ sudo update-alternatives...--config java $ sudo update-alternatives --config javac 总结 以上所述是小编给大家介绍的Linux 中如何切换相同程序的不同版本,希望对大家有所帮助
在Android开发中,列表可以说是最常见的了,一般都是使用ListView,当涉及到二维数组时,更多的使用到ExpandableListView,然而当数据结构比较复杂时,就需要使用三级菜单或者更多级的菜单来显示...首先第一个要处理的问题是在AdpOne的getChildView方法中,需要对EListTwo的高度进行动态计算,因为EListTwo展开和关闭时高度是不一样的,所以要在EListTwo的setOnGroupExpandListener...和setOnGroupCollapseListener方法中做相应的处理: /** * @author Apathy、恒 * * 子ExpandableListView展开时,因为group...只有一项,所以子ExpandableListView的总高度= * (子ExpandableListView的child数量 + 1 )* 每一项的高度 * */ eListView.setOnGroupExpandListener...,我们一般需要点击菜单后进行相应的界面跳转或者数据处理,所以就需要获取所点击的菜单精确下标,获取方法很简单,只需要定义一个接口,在AdpOne的getChildView方法中回调即可: /** * @
一 ExpandableListView基本介绍 ExpandableListView是Android中的一个可扩展列表视图,它继承自ListView,并提供了支持展开和折叠的功能。...二 ExpandableListView使用方法 在 XML 布局文件中添加 ExpandableListView: <ExpandableListView android:id="@+id/...childList.get(childPosition) : null; } // 其他方法... } 在代码中设置适配器和监听器: // 获取 ExpandableListView...常用属性: groupIndicator:用于指示分组项的展开和折叠状态的图标。可以通过设置不同的资源文件或自定义的 Drawable 来改变分组指示器的样式。...childIndicator:用于指示子项的展开和折叠状态的图标。与 groupIndicator 类似,可根据需要进行自定义。 divider:分割线的样式,用于分隔不同的分组项和子项。
实现效果图: expandableListView groupIndicator 图片默认是在左边,而且比较难看,而我要的是实现groupIndicator 在右边自定义图片, 换图片 最简单的就是直接...6.加载自己的style android:id=”@+id/expandableListView1″ style=”@style/ExpandableListView” android:layout_width...match_parent” android:layout_alignParentLeft=”true” android:layout_alignParentTop=”true” > 7.在activity中设置...,然后直接在groupitem布局加上一个ImageView,再做一个Childitem的布局,布局我直接设4个button,自由发挥了。...现在要做的就是设置监听 监听ImageView expandableListView 的点击事件,这里我是点图片展开和关闭Child,长点击expandableListView 也展开和关闭Child,
前言 在Android的日常开发中,评论与回复功能是我们经常遇到的需求之一,其中评论与回复列表的展示一般在功能模块中占比较大。...简单来说,ExpandableListView是一个用于垂直方向滚动的二级列表视图,ExpandableListView与listview不同之处在于,它可以实现二级分组,并通过ExpandableListAdapter...布局中定义 首先,我们需要在xml的布局文件中声明ExpandableListView: <ExpandableListView android:id="@+id/detail_page_lv_comment...我们可以取消其点击特效,避免其影响用户体验,只需要设置如上代码中的listSelector即可。 ExpandableListView具有默认的分割线,可以通过divider属性将其隐藏。...Activity中使用 接下来,我们就需要在activity中显示评论和回复的二级列表了: private ExpandableListView expandableListView; private
在jQuery中,我们可以使用各种方法来查找和选择特定的元素或元素集合。这些查找方法使我们能够根据不同的选择器、属性、关系等条件来定位和操作元素。...parents()方法选择当前元素集合中每个元素的所有祖先元素,并返回新的元素集合。...下面是parents()方法的使用示例:$("li").parents(".container");上述示例将选择所有元素的.container祖先元素。...next()方法和prev()方法选择当前元素集合中每个元素的下一个兄弟元素和上一个兄弟元素,并返回新的元素集合。...然后,我们使用find()方法在$container中查找所有的元素,并将它们存储在变量$listItems中。接下来,我们使用不同的对象查找方法来选择和操作元素。
上一期学习了ExpandableListView的使用,你已经掌握了吗?本期开始学习AdapterViewFilpper的使用。...View组件,程序可通过showPrevious()和showNext()方法控制该组件显示上一个、下一个组件。...AdapterViewFilpper可以在多个View切换过程中使用渐隐渐显的动画效果。除此之外,还可以调用该组件的startFlipping()控制它“自动播放”下一个View组件。...showPrevious()、 showNext()方法来控制该组件显示上一个、下一个组件,并调用了 startFlipping()方法控制自动播放。...单击上一个或下一个按钮可以切换显示的组件,单击自动播放按钮,将可以看到AdapterViewFlipper每隔5秒更换一个图片,切换图片时会使用渐隐渐显效果。
本文实例为大家分享了ExpandableListView多项选择展示的具体代码,供大家参考,具体内容如下 目标(需求): 1. 创建一个可展开可收缩的列表; 2....与ListView不同的是,ExpandableListAdapter要渲染实现两级View(Group级和列表项级)的操作。...在执行 listView的setItemChecked函数时,其check状态是从这个自己创建的表中读出的,不能通过ListView的mCheckStates来读。...这个我认为是ExpandableListView的一个缺陷。...源程序:Multi-check-in-expandablelistview 以上就是本文的全部内容,希望对大家的学习有所帮助。
本文实例为大家分享了ExpandableListView二级分栏效果的具体代码,供大家参考,具体内容如下 对ExpandableListView控件进行封装(未自定义)直接上代码: 通用ViewHolder...类,仅在setImageResource中添加代码 package com.svp.haoyan.expandablelistview.tool; import android.content.Context...(viewHolder, getChild(groupPosition,childPosition)); return viewHolder.getmConvertView(); /*子元素是否处于组中的最后一个...一个典型的实现将返回表达式getCount() == 0的结果,但是由于getCount()包含了头部和尾部,适配器可能需要不同的行为。...源码下载:ExpandableListView二级分栏效果 以上就是本文的全部内容,希望对大家的学习有所帮助。
android:background="@drawable/btn_bg_menu" /> 2 由于每一个child子项中的图片和标题都不一样...该组ID必须在组中是唯一的.必须不同于其他所有ID(分组及子项目的ID) */ @Override public long getChildId(int groupPosition, int....该组ID必须在组中是唯一的.必须不同于其他所有ID(分组及子项目的ID) */ @Override public long getGroupId(int groupPosition)...我们给ExpandableListView添加了上下文菜单,长按group或者child的某一项都能弹出上下文菜单,另外,在group和child中,都添加了一个 这样的按钮,本来是打算,点击group...中的此按钮弹出和长按group时弹出一样的上下文菜单,点击child上面的此按钮时也弹出相应的上下文菜单,但是此问题没能解决。
创建方法 (1)第一种方法与ListView等普通控件一样,直接在布局文件中添加ExpandableListView控件即可。...第二种方法仅适用于一个页面中只有一个ExpandableListView的情况。...适配器 根据数据源的不同,可使用的适配器有两个:BaseExpandableListAdapter和CursorTreeAdapter,其中,CursorTreeAdapter用于数据源为Cursor...getGroupId():获取组的ID。 getGroupView():获取组的视图。 getChild():从数据源中获取子条目的内容。...getChildCount():获取指定组中的子条目总数,并非全部的子条目。 getChildId():获取子条目的ID。
:删除与指定表达式匹配的元素 slice(start,end):从给定的数组中,按照范围截取元素。...:从下一个兄弟开始,直到指定元素结束 parent():获取父元素 parents():匹配元素的祖先元素的元素(不包含根元素) prev():上一个兄弟 prevAll():前面的所有兄弟 prevUntil...():先辈 ☆prev():上一个兄弟 例如: $("#two").prev(); prevAll():前面的所有兄弟 prevUntil():从上一个兄弟开始,直至指定元素结束 ☆siblings()...的主要区别是: 1,前者从当前元素开始匹配寻找,后者从父元素开始匹配寻找; 2,前者逐级向上查找,直到发现匹配的元素后就停止了,后者一直向上查找直到根元素,然后把这些元素放进一个临时集合中,再用给定的选择器表达式去过滤...事件切换 hover 在mouseover和mouseout之间进行切换 toggle 点击事件切换,点击第一次执行 fn,点击第二次执行fn2.....
test.nextElementSibling; // 下一个兄弟节点元素 注意操作父来控制子必须给子元素赋予一个变量 二.jq $("#test1").parent(); // 父节点 $("#test1").parents...(); // 全部父节点 $("#test1").parents(".mui-content"); $("#test").children(); // 全部子节点 $("#test").children...对象,他们包含筛选到的元素 $("ul li").eq(1); // 选取ul li中匹配的索引顺序为1的元素(也就是第2个li元素) $("ul li").first(); // 选取ul li中匹配的第一个元素...$("ul li").last(); // 选取ul li中匹配的最后一个元素 $("ul li").slice(1, 4); // 选取第2 ~ 4个元素 $("ul li").filter(":even..."); // 选取ul li中所有奇数顺序的元素
元素结合.nextUntil(选择器) 获取到当前元素后面所有兄弟元素, 直到选择器元素为止(不包含选择器元素) 7. prev() => 当前元素的上一个元素 8. prevAll...元素集合.parents() 拿到结构父级的所有父元素 2....元素集合.parents(选择器) 拿到结构父级里面所有父元素中符合选择器的那一个元素 12. children() => 语法 1....元素集合.children(选择器) 拿到该元素的所有子元素中符合选择器的那一个元素 13. sinblings() => 拿到该元素的所有兄弟元素, 自己除外 14. find.../jquery/jquery.min.js"> /* jQuery 的事件绑定 1. on() + 事件绑定, 根据传递不同的参数做不同的事情
: 获取已知节点的上一个兄弟元素节点 neighbourObj.nextSibling:获取已知节点的下一个兄弟节点(会将空格和换行计入) neighbourObj.nextElementSibling...节点的方法 方法 用途 祖先 $("#A").parent() 获取A节点的直接父节点 $("#A").parents() 获取A节点的所有祖先节点 $("#A").parents(".B") 获取....prev() 获取A节点的上一个兄弟节点 $("#A").prevAll() 获取A节点之前的所有兄弟节点 $("#A").prevUntil(".B") 获取A节点之前、B节点之后的所有兄弟节点 $...HTMLCollection和NodeList的共同点: 都是类数组对象,都有length属性; 都有共同的方法:item,可以通过item(index)或者item(id)来访问返回结果中的元素; 一般都是实时变动的...注意:document.querySelectorAll返回的NodeList不是实时的); HTMLCollection和NodeList的不同点: NodeList可以包含任何节点类型,HTMLCollection
按钮级权限 前面章节中实现了菜单权限的控制,按钮权限的道理也是一样的。判断abpConfig.auth.grantedPolicies是否包含某个权限,然后在组件中使用v-if渲染就好了。...身份认证管理 角色和用户的增删改查就不说了,这里要注意一下权限管理。用户和角色都需要用到权限管理,在ABP Angular版中是一个独立的permission-management模块。...它来自ABP的FeatureManagement模块,也称为”特征管理“,这个后面再做介绍。 租户切换 完成了租户管理,那么登录时也应该可以切换租户。 ?...切换租户比较简单,就是根据输入的租户名称获取到租户ID,然后调用/abp/application-configuration接口,把租户ID放到请求Header的__tenant字段中即可,之后的请求中也需要这个参数...其实ABP后端是可以配置是否启用多租户的,这里也可以根据后端配置来显示或者隐藏租户切换的按钮。跟ABP模板相比,登录界面还缺少一个注册入口,后面再加上吧。 效果 ? ? ? ? ?
1、jquery 获取元素(父节点,子节点,兄弟节点) $("#test1").parent(); // 父节点 $("#test1").parents(); // 全部父节点 $("#test1")....parents(".mui-content"); $("#test").children(); // 全部子节点 $("#test").children("#test1"); $("#test").contents...(); // 返回#test里面的所有内容,包括节点和文本 $("#test").contents("#test1"); $("#test1").prev(); // 上一个兄弟节点 $("#test1...对象,他们包含筛选到的元素 $("ul li").eq(1); // 选取ul li中匹配的索引顺序为1的元素(也就是第2个li元素) $("ul li").first(); // 选取ul li中匹配的第一个元素...$("ul li").last(); // 选取ul li中匹配的最后一个元素 $("ul li").slice(1, 4); // 选取第2 ~ 4个元素 $("ul li").filter(":even
runjob,SparkContex中的runjob会不断调用SparkContext中的其他重载的runjob,最终会调用DAGScheduler中的runjob runjob // 调用submitJob...Stage的划分 3.1 什么是Stage 用户提交的计算任务是由一个RDD构成的DAG,如果DAG在转换的时候需要做Shuffle,那么Shuffle的过程就给这个DAG分成了不同的Stage。...其中不同的Stage不同并行计算,因为需要计算的数据来源于上一个Stage,而同一个Stage由一组完全独立的Task组成,每个Task计算逻辑完全相同,但是所处理的数据不同,这些数据也就是Partition...} 在上述代码中,对指定的RDD的依赖进行了广度优先级便利,遇到窄依赖则归为统一stage,如果是宽依赖,则生成一个新的stage。...Task,每个Task处理的逻辑完全相同,不同的是处理的数据,每个Task负责处理一个Partition,他们从数据源获取逻辑,然后按照拓扑顺序,顺序执行 ?
上一级目录 ~ 家(home)目录 / 根(root)目录或目录分隔 常用Linux快捷键 TAB 补全命令 CTRL+U 剪切光标位置到行首的位置 CTRL+T 粘贴命令行剪切的内容(与鼠标右键粘贴略有不同...) CTRL+C 终止任务 CTRL+Z 暂停任务 CTRL+L或输入clear 清屏 CTRL+E 回到行尾 CTRL+A 回到行首 CTRL+W 剪切一个单词(从当前位置剪切到上一个空格) # 依次输入三次...切换到切换到上层目录,相对路径 cd ../.....切换到上上层目录,相对路径 cd / 切换到根目录 cd /bin 切换到根目录下的bin,绝对路径 cd ~ 回到用户家目录 cd 同上,回到用户家目录 cd - 返回上一次的工作目录(类似于电视的“...这样0~7的每个数都可以表达对应的权限,如7=4+2+1 创建 mkdir : make directory 建立新的目录 常见参数:-p/--parents,递归创造目录 常见用法:mkdir -p
(expr),类似于 jQuery.parents(expr) ,但是是查找所有祖先元素,不限于父元素 jQuery.children(expr),返回所有子节点,这个方法只会返回直接的孩子节点,不会返回所有的子孙节点...这个方法和 children() 的区别就在于,包括空白文本,也会被作为一个 jQuery 对象返回, children() 则只会返回节点 jQuery.prev(),返回上一个兄弟节点,不是所有的兄弟节点...(),返回兄弟姐妹节点,不分前后 jQuery.find(expr),跟 jQuery.filter(expr) 完全不一样: jQuery.filter(),是从初始的 jQuery 对象集合中筛选出一部分...,而 jQuery.find(),的返回结果,不会有初始集合中的内容,比如 $("p").find("span") ,是从 元素开始找 ,等同于 $("p span") JS获取:...s的下一个兄弟节点 var ps=s.previousSibling; //得到s的上一个兄弟节点 var fc=s.firstChild; //获得s的第一个子节点 var lc=s.lastChild
领取专属 10元无门槛券
手把手带您无忧上云