日工作总结
1.根据接口获取数据是否为空,对获取集合元素是否为空进行判断
代码如下
private void getIndex() {
String ua = PermissionUtil.getInstance().getImei(activity);
String version = activity.getResources().getString(R.string.version_name);
action.getIndex(activity, ua, version, new ActionCallbackListener() {
@Override
public void onSuccess(IndexBean data) {//注释:data.getArticles().size()是对接口获取的数组数据进行判断.size()是否为空,为空的话setText("XX"),否则获取接口获取的数据. if (data.getArticles().size()==0){ tv_announce.setText("无数据"); }else { tv_announce.setText(data.getArticles().get(0).getTitle()); } //注释:获取Bean中数据进行数据展示 List<OptimizationProductsBean> list = new ArrayList<>(); for (int i = 0; i < data.getOptimizationProducts().size(); i++) { data.getOptimizationProducts().get(i).getImageUrl(); list.add(data.getOptimizationProducts().get(i)); } FavorAdapter adapter = new FavorAdapter(activity, list); lv_favor.setAdapter(adapter); //注释:根据listview的item个数,动态设置listview的高度 setListViewHeightBasedOnChildren(lv_favor); @Override public void onFailure(int errorCode, String message) { RequestBackCodeUtil.getInstance().handle(activity, errorCode, message); } });
- 2.根据item数动态设定ListView的高度
-
//注释:此方法在setAdapter之后调用,子ListView的每个Item必须是LinearLayout,不能是其他的,因为其他的Layout(如RelativeLayout)没有重写onMeasure(),所以会在onMeasure()时抛出异常。
public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } int totalHeight = 0; for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); listView.setLayoutParams(params); }
3.activity向Fragment传值
//注释:在activity中创建方法,便于在Fragment中取值
public AppAction getAppAction(){
return appAction;
}
public MyApplication application(){
return application;
}
//注释:在Fragment中onAttach()方法中获取activity传来的值
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
aAction = ((PosterActivity) activity).getAppAction();
mApplication = ((PosterActivity) activity).getApplication();
}4.activity向Fragment传值
获取SharedPreferences的两种方式: 1 调用Context对象的getSharedPreferences()方法 2 调用Activity对象的getPreferences()方法 两种方式的区别: 调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享. 调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用. SharedPreferences的四种操作模式: Context.MODE_PRIVATE Context.MODE_APPEND Context.MODE_WORLD_READABLE Context.MODE_WORLD_WRITEABLE Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容 Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件. Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件. MODE_WORLD_READABLE:表示当前文件可以被其他应用读取. MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入. 将数据保存至SharedPreferences: SharedPreferences preferences=getSharedPreferences("user",Context.MODE_PRIVATE); Editor editor=preferences.edit(); String name="xixi"; String age="22"; editor.putString("name", name); editor.putString("age", age); editor.commit(); 从SharedPreferences获取数据: SharedPreferences preferences=getSharedPreferences("user", Context.MODE_PRIVATE); String name=preferences.getString("name", "defaultname"); String age=preferences.getString("age", "0");
5.android中自定义弹出框样式
private void showDialog() { final Dialog dialog = new Dialog(AppointMentActivity.this, R.style.dialogTheme); //View dialogView = LayoutInflater.from(activity).inflate(R.layout.photo_select,null); View dialogView = LayoutInflater.from(AppointMentActivity.this).inflate(R.layout.dialog_yuyue,null); //获得dialog的window窗口 Window window = dialog.getWindow(); //设置dialog在屏幕底部 window.setGravity(Gravity.CENTER); //设置dialog弹出时的动画效果,从屏幕底部向上弹出 // window.setWindowAnimations(R.style.dialogStyle); window.getDecorView().setPadding(DensityUtil.dip2px(30), DensityUtil.dip2px(30), DensityUtil.dip2px(30), DensityUtil.dip2px(30)); //获得window窗口的属性 WindowManager.LayoutParams lp = window.getAttributes(); //设置窗口宽度为充满全屏 lp.width = DensityUtil.dip2px(300); //设置窗口高度为包裹内容 // lp.height = WindowManager.LayoutParams.WRAP_CONTENT; lp.height = DensityUtil.dip2px(300); // 设置 dialog 高度 //将设置好的属性set回去 window.setAttributes(lp); //将自定义布局加载到dialog上 dialog.setContentView(dialogView); //dialog.setCanceledOnTouchOutside(false); // false 调用这个方法时,按对话框以外的地方不起作用。按返回键还起作用 dialog.setCanceledOnTouchOutside(true); MyTextView tv_confirm = dialogView.findViewById(R.id.tv_confirm); tv_confirm.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); dialog.show(); }
6.点击提交进行数据校验
//注释:在调接口数据之前进行验证 @Override public void onClick(View v) { switch (v.getId()){ case R.id.rl_subscribe: if(TextUtils.isEmpty(et_name.getText().toString())){ ToastUtil.show(AppointMentActivity.this,"请输入姓名"); return; } //注释:先为匹配正则表达式 String nameFormula = "[\\u4e00-\\u9fa5a-zA-Z]{2,50}"; // 2-50字中英文姓名 if(!et_name.getText().toString().matches(nameFormula)){ ToastUtil.show(context,"请输入2-50中文或是英文"); return; } if(TextUtils.isEmpty(et_phone.getText().toString()) || et_phone.getText().toString().length() != 11){ ToastUtil.show(AppointMentActivity.this,"手机号格式错误,请重新输入"); return; } if(et_input.getText().toString().length() > 30){ ToastUtil.show(AppointMentActivity.this,"备注最多30个字"); return; } showDialog(); getAppointment(); break; case R.id.base_back: break; } super.onClick(v); }