dialog点击外边关闭 dialog自定义尺寸 sqlite自增长 修改权限列表变量更新数据库

来源:互联网 发布:jbl蓝牙音箱 知乎 编辑:程序博客网 时间:2024/06/06 02:36

1.dialog点击外边关闭

public static Dialog creatDialog(final Context context, String tip){  Dialog dialog = new Dialog(context, R.style.appDialog);   dialog.setContentView(R.layout.common_wdailog);   dialog.setCanceledOnTouchOutside(false);// 设置点击屏幕Dialog不消失

2.dialog自定义尺寸
 int width = ScreenUtils.getScreenHeight((Context) mainActInterface);        getDialog().getWindow().setLayout(width * 2 / 3, LinearLayout.LayoutParams.WRAP_CONTENT);    public static int getScreenHeight(Context context)    {        WindowManager wm = (WindowManager) context                .getSystemService(Context.WINDOW_SERVICE);        DisplayMetrics outMetrics = new DisplayMetrics();        wm.getDefaultDisplay().getMetrics(outMetrics);        return outMetrics.heightPixels;    }
3.sqlite自增长 

SQLite中创建自增字段:

简单的回答:一个声明为 INTEGER PRIMARY KEY 的字段将自动增加。

自测有一些smallint 不能自增。


4.变量更新数据库

有时我们会遇到这样的需求:1.表A里是所有的权限列表。2.表B是所有用户对应的权限列表。3.也就是B中如果添加一个功能就要插入条记录,减少一个功能要删除一个记录。

当我们修改一个权限如何变量更新数据库呢?

我是这么做的弄一个List<Function> 如果在A中点亮或者取消一个权限, 就把对应的Bean加入或者删除到List中,在保存时遍历这个list和已有用户的列表,如果有功能id相同,

则证明原来有这个功能那么把这个功能加入删除的列表中,如果以前没有这个id就把功能加入添加的列表中去,最后开启事务执行添加删除操作。

上代码:

Observable.create(new Observable.OnSubscribe<Integer>() {            @Override            public void call(Subscriber<? super Integer> subscriber) {                //查询原等级roleFunc记录 如果有修改过并且原记录有这条则删除 没有就添加                List<RoleFunctionBean> deleteList = new ArrayList<RoleFunctionBean>();                List<RoleFunctionBean> insertList = new ArrayList<RoleFunctionBean>();                List<RoleFunctionBean> roleFunctionBeanList = userDBHelper.getAllRoleFuncations(level);                    for(FunctionInfoBean functionInfoBean:getPermissionAdapter().getModifiedFunctionInfoBeans())                    {                        boolean exgist=false;                        for (RoleFunctionBean roleFunctionBean:roleFunctionBeanList)                        {                            if(roleFunctionBean.getFunId()==functionInfoBean.getFunId())                            {                                exgist=true;                                deleteList.add(roleFunctionBean);                                break;                            }                        }                        if(!exgist)                        {                            //insert                            insertList.add(new RoleFunctionBean(level, functionInfoBean.getFunId(), true));                        }                    }                Log.i(TAG, "call: deleteList size"+deleteList.size()+" insertList size"+insertList.size());                userDBHelper.insertRoleFunctionsWithoutID(insertList);                userDBHelper.deleteRoleFunctions(deleteList);                subscriber.onCompleted();            }        }).subscribeOn(Schedulers.io()).doOnSubscribe(new Action0() {            @Override            public void call() {                pDialog.show();                pDialog.setCancelable(false);            }        }).subscribeOn(AndroidSchedulers.mainThread()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Subscriber<Integer>() {            @Override            public void onCompleted() {                Log.i(TAG, "onCompleted: Modify done");                pDialog.dismiss();                permissionAdapter.getModifiedFunctionInfoBeans().clear();                Toast.makeText(getView().getMContext(), "保存成功!", Toast.LENGTH_SHORT).show();            }            @Override            public void onError(Throwable e) {            }            @Override            public void onNext(Integer integer) {            }        });


0 0