bcoder

7月 262016
 

可以通过以下几种方法实现EditText的只读属性

1. 方法一:使用EditText的android:Editable属性

  将EditText的Editable属性设置为false后,EditText就成只读了,缺点是不能在java代码中动态设置,而且这个属性android官方已经不推荐使用了,官方的解释是要想一个view可编辑(Editable=true)可以用EditText,不可编辑用TextView就可以了 8-O 

2. 方法二:使用TextView替代

  既然TextView和EditText就差一个可编辑,那么用一个TextView去替代EditText好了。只读的时候显示TextView隐藏EditText,编辑的时候显示EditText隐藏TextView,不过TextView必须和EditText用同样的样式,以不让用户查觉到组件变换了。本人没亲测这种方法,大家有兴趣的话可以试试。

3. 方法三:设置EditText的keylistener来实现

  代码不多,直接把完整的代码贴出来吧

  布局文件代码

 

7月 102016
 

  Java、Php等语言中都有成熟的框架来解析Json数据,可以让我们使用很少的代码就把格式化好的json数据转换成程序可识别的对象或者属性,同时delphi中也有这样的组件来实现此功能,即IsuperObject。如果还没有这个组件的请在网上搜索下载或者在下面留言处留下你的邮箱向本人索取。

  下面先说一下ISuperObject中几个常用的函数

  • function SO(const s: SOString = ‘{}’): ISuperObject; overload; 此函数传入json数据字符串,并返回一个ISuperObject对象,这一般是我们解析json时使用的第一个函数,如jObj := SO(jsonstr)。
  • property O[const path: SOString]: ISuperObject read GetO write PutO; default; 如:jobj.O[‘username’],此函数被一个ISuperObject对象调用,方括号内的字符串为json中的字段名称,返回一个ISuperObject对象。
  • property S[const path: SOString]: SOString read GetS write PutS; 此函数被一个ISuperObject对象调用,和O[‘username’]不同的是,它返回的是一个SoString,即一个字符串,使用方法 str := jObj.S[‘username’]; 同理的还有其他几个类似的函数,如I[‘age’]返回整数,B[‘isenable’]返回布尔型,A[‘users’]返回一个TSuperArray数组
  • AsString, AsBoolean, AsInteger,AsArray,ISuperObject的函数,用来把ISuperObject转换成相应的数据类型。

  下面我们看一个演示代码,json数据如下

  Delphi版本2010,代码如下:

点击下载源代码

proguard文档地址

 分类:Android, Java 阅读 (1,064)  No Responses »
7月 032016
 

在Android的sdk/tools/proguard/docs/index.html

比如:

file:///home/liuderu/software/adt-bundle-linux-x86_64-20131030/sdk/tools/proguard/docs/index.html

 Posted by on 2016-07-03

当continue遇上finally

 分类:Java, Java语言 阅读 (1,305)  当continue遇上finally已关闭评论
6月 292016
 

当continue遇上finally,continue执行后仍会执行finally中的代码,如下代码:

运行输出结果:

 

 Posted by on 2016-06-29

Java位操作优先级问题一例记录

 分类:Android, Java, Java语言 阅读 (696)  Java位操作优先级问题一例记录已关闭评论
6月 262016
 

今天在对数据进行位操作和加操作混合运算的时候,发现得到的结果不对

int result = src << 4 + 10;

后来发现加法操作符的优先级要高于位操作,所以造成此问题。

附Java操作符的优先级表如下:

 Posted by on 2016-06-26

mailto参数详解

 分类:Others, Others 阅读 (6,447)  No Responses »
6月 262016
 

  我们知道mailto链接可以指定发送邮件到某个邮箱,但是mailto其实还支持其他的参数,这些参数在做后台客服网站是还是很有用的。

  mailto的参数格式和url中的参数格式是一样的,参数段以?开头,不同的参数间以&分隔,如<a href=”mailto:test@bcoer.com?subject=mysubject”>TEST</a>

  mailto支持以下参数:

  • cc: 要抄送的地址
  • bcc: 要密送的地址
  • subject: 邮件的标题
  • body: 邮件的内容

  如下面的例子所示:

  点击链接TEST后,系统就会自动打开邮件发送程序,并在相应的栏目中填入链接中的数据,如果我们的后台系统需要给客户发送反馈邮件,这样做就可以省去很多不必要的文字输入了。

6月 202016
 

一共有三种方法可以实现StringBuilder的清空

  1. New一个新的StringBuilder
  2. 使用StringBuilder的delete方法
  3. 使用StringBuilder的setLength方法

下面通过代码验证三种方法的效率

测试了十几次,选了一次比较有代表性的结果:

由结果可见setLength是最快的,delete不相上下,new是最慢的

 Posted by on 2016-06-20

Laravel中安装Excel插件

 分类:PHP 阅读 (1,189)  No Responses »
6月 062016
 

1. 执行如下composer命令

2. 上面命令执行成功后,在config/app.php的’providers’数组末尾加入

3. 在config/app.php的’aliases’数组末尾加入

4. 然后执行如下命令

 

 Posted by on 2016-06-06
5月 262016
 

一、查找所有div元素

  在jQuery中使用$(‘div’)来表示全部的div元素,同时使用.click事件设置点击事件,如下面的示例代码

二、为某个id元素内的所有div设置单击事件

  如果我们只想对某个元素内的div执行单击事件,则用如下方式$(“#divid div”),divid为接受事件的父div的id,代码如下:

三、为样式为某个class的所有div的子类设置单击事件

  同第二部分一样的道理,只是把”#”符号换为”.”符号,代码如下:

四、这种情况时如何阻止事件往父元素的传递

  默认情况下,html内元素的事件会自动往父元素传递,即冒泡传递,如果div1里嵌套了一个div2,那么单击div2时,div1也会接受到单击事件。给例子一中的5个div元素设置一个父div,您在测试的时候就会发现alert方法执行了两次,第二次输出父类的html。我们可以通过stopPropagation来阻止冒泡传递,如下代码所示:

  因为有些IE的版本不支持stopPropagation,所以cancelBubble 是为适应那些的IE版本

五、总结

  同样的,其他的元素也适用于这些操作方法,你可以为所有的p元素、span元素、td元素等设置点击事件。

 Posted by on 2016-05-26