前言
昨天我们已经实现了《C#根据类生成签名字符串(附DEMO下载地址)》,因为与后台做通讯时有可能是多客户端的,今天我们把Android这个实现方式也做出来
视频效果
按照惯例我们直接上干货
核心代码
public String Signstr(T t){
String str = "";
//定义属性名列表
List<String> lstfieldname = new ArrayList<>();
//获取当前类里的所有属性
Field[] fields = t.getClass().getFields();
//遍历所有属性并把属性名称写入到List<String>中
for (Field field : fields) {
//判断是我们自己定义的属性名再写入
if (!field.isSynthetic()) {
lstfieldname.add(field.getName());
}
}
//对Lst<String>进行ASCII码进行排序
Collections.sort(lstfieldname);
//根据排序后的名称我们开始拼接字符串
for (String fieldname : lstfieldname) {
//获取属性值
String fieldvalue = "";
try {
fieldvalue = (String) t.getClass().getField(fieldname).get(t);
} catch (Exception e) {
e.printStackTrace();
}
str = str + fieldname + "=" + fieldvalue + "&";
}
//去掉字符串的最后一个&符号
str = str.substring(0, str.length() - 1);
return str;
}
从上面的代码可以看出来,比昨天我们写的C#的要麻烦的多,最主要的原因还是C#的是Linq用起来确实方便顺手。
代码里的实现步骤:
代码编写
这里我们就没再新建一个安卓项目,用在我现在正在做的一个程序里面一个页面进行测试。页面上有一个textView
代码里面加载这个textView,然后写textView的事件。
通过上面可以看到我们也建了一个User的用户信息类,还有个一Sign就是我们用于生成签名的类
User用户信息类
列了四个字段,我们在构造函数里面直接给其赋值了,就不再多写代码。
Sign生成签名类
运行的结果
点击业务Fragment后显示新的结果
我们可以看出来已经按字符的ASCII排序生成我们的字符串了
-END-