比如 你要 获取 uuid 拼接的字符串;
Map<String, String> paramsMap=new HashMap<String, String>();
paramsMap.put("1", "aa");
paramsMap.put("3", "aa");
paramsMap.put("2", "aa");
List<String > paramsValueList=new ArrayList<String>();
paramsValueList.addAll(paramsMap.values());
String uuids="";
String[] keys = paramsMap.keySet().toArray(new String[paramsMap.size()]);
Arrays.sort(keys);
for (String key : keys) {
uuids+=key+",";
}
System.out.println(uuids. subSequence(0, uuids.length() - 1).toString());
startsWith 判断字符串第一个字母是什么!
indexOf 判断 前面一个很多个逗号分隔的字符串里是否包含当前人的uuid;
<span style="white-space:pre"> </span>String title = "";
if (key.startsWith("0_")) {
DepartmentField department = (DepartmentField) data.get(key);
title = department.departName + "(" + department.departCount + "人)";
}
if (key.startsWith("1_")) {
EmployeeField employee = (EmployeeField) data.get(key);
String positionName = "";
switch (employee.position) {
case "1":
positionName = " 部门主管";
break;
case "2":
positionName = " 部门副主管";
break;
}
title = employee.personName + " " + positionName;
if (!TextUtils.isEmpty(disabledItems)) {
if (("," + disabledItems + ",").indexOf("," + employee.personUuid + ",") != -1) {
holder.buttonDelete.setVisibility(View.GONE);
holder.buttonDelete.setOnClickListener(null);
}
}
}
checkBox 勾选 选择人的界面 ischeck 一些是否选择点击 true的false的场景
uuid 可以用_0 和_1 _2 来赋值加uuid 这样startsWith就用上了,
data 一般都是对象
selected 就是 checkbox的状态 ,
我们来map来存数据,控制他是否勾选;
private void processingSelectedDisplayData(String uuid, Object data, boolean selected) {
if (selected) {
dataSelectedDisply.put(uuid, data);
} else {
dataSelectedDisply.remove(uuid);
}
adapterSelected.notifyDataSetChanged();
}
2016.10.28日
今天,我在做项目的时候, A跳转一个B : activity, 但同时onActivityForResult 直接就调用了; resultCode 为 0 ,requestCode 和启动的一致;
这样在导致我们从第二界面回来不再走onActivityForResult 了,拿不到数据;
启动方式 :
A:
Intent intent = new Intent(getIntent()); intent.setClass(A.this, B.class); startActivityForResult(intent, REQUESTCODE_SINGLETASKDOME);
结果发现是:new Intent(getIntent()); 他导致的, 因为我以前都这样把上一个界面的数据传递过来;没考虑会导致这样状况;有一个情况,我写了一个C界面, 从C跳转到A,再次从A 跳B ,这时倒拿到数据, 呵呵;Intent intent = new Intent(C.this,A.class);这时,我吧C改了下:Intent intent = new Intent(getIntent()); intent.setClass(C.this,A.class); startActivityForResult(intent,REQUEST_HOME);C点击下一个A直接会走onActivityForResult 在A界面点击去B 也会调用onActivityForResult ,
最后说明; 我们要是想启动一个activity不能 new Intent(getIntent()); 否则会导致你 点击去下一个界面的同时直接就会走onActivityForResult ,下个界面回来也拿到不到 onActivityForResult 的结果了;
除非你在第一个界面是 new Intent(); 起手的,这样你后续可以 new Intent(getIntent()); 因为你取的是一个界面的Intent状态;未明白的问题 : 不知道为什么这样第一个界面这样起手会导致直接调用onActivityForResult
Intent intent = new Intent(getIntent()); intent.setClass(C.this,A.class); startActivityForResult(intent,REQUEST_HOME);
RxBus 测试 : 结果是你在post后,无论你结束的方法写在哪个界面,他都会立即结束结果;
前提是你需要注入监听;
mRxBus.register(eventName);
/** * RxBus注入监听 * @param eventName * @param action1 */ public <T>void on(String eventName, Action1<T> action1) { Observable<T> mObservable = mRxBus.register(eventName); mObservables.put(eventName, mObservable); /*订阅管理*/ mCompositeSubscription.add(mObservable.observeOn(AndroidSchedulers.mainThread()) .subscribe(action1, new Action1<Throwable>() { @Override public void call(Throwable throwable) { throwable.printStackTrace(); } })); }
我们在循环的时候 , 想 边循环 边删除 可以有2种办法 ;
for (int i = 0; i < list.size(); i++) {
System.out.println("哈哈"+i);
list.remove(i);
i--; //每次删除后,集合就少1, i-- ,让我们永远都获取集合里的第一个索引元素;
}
<span style="white-space:pre"> </span>
for (int i = list.size()-1; i >=0; i--) {
System.out.println("哈哈"+i);
list.remove(i);//每次都获取集合最大索引,删除一个后,继续获取最大索引来遍历
}
在splashActivity界面,设置了白色的背景:
<item name="android:Background">@color/white</item> 让我的图片和文字都有白色的View方框背景 ;换成下面的 图片和文字和白色的背景融为一体了;
<style name="AppTheme.Launcher" parent="Theme.AppCompat.LightNoActionBar"> <item name="android:windowBackground">@color/white</item> </style>
居然还有数组,每个数组是一个集合的这个东西!!!!!!!
List<String> list = new ArrayList<String>();// 定义一个集合
list.add("1");// 集合存东西
List[] reselectList = new List[2];// 定义 2个数组 ,每个数组是一个集合对象
reselectList[1] = list;// 给数组索引第二个list赋值
for (int i = 0; i < reselectList.length; i++) {
List list2 = reselectList[i];
System.out.println(list2);
}