网上挂号V1.0之开始挂号

来源:互联网 发布:怎样在淘宝查注册时间 编辑:程序博客网 时间:2024/06/08 12:50

网上预约挂号系统

上一篇链接 网上挂号V1.0

现在来进行挂号和填写患者信息,而且每次只能绑定一个患者,更新每个医生每天每个时间段对应的号数,并设置满号状态。

说干就干。

  • 挂号和填写患者信息内容

    这里写图片描述

(a)日期控件是github上的库,导入

compile ‘com.github.flavienlaurent.datetimepicker:library:0.0.2’

可以设置的日历 年范围
private static final int MAX_YEAR = 2037;
private static final int MIN_YEAR = 1902;

基本使用,在获取的月份的值是当前月份 - 1,所以我就自己加了1,嘻嘻

public static final String DATEPICKER_TAG = "datepicker";    private void initDate() {        final Calendar calendar = Calendar.getInstance();        final DatePickerDialog datePickerDialog = DatePickerDialog.newInstance(this, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), false);        findViewById(R.id.dateButton).setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                datePickerDialog.setYearRange(1903, 2028);                datePickerDialog.show(getSupportFragmentManager(), DATEPICKER_TAG);            }        });    }    @Override    public void onDateSet(DatePickerDialog datePickerDialog, int year, int month, int day) {        int truemonth = month + 1;        Toast.makeText(MainActivity.this, "new date:" + year + "-" + truemonth + "-" + day, Toast.LENGTH_LONG).show();    }

(b)下拉选择框控件,修改网上的源码 源码博客地址
一开始我写的接口放的地方不对,老是无法实现,最后就直接对listview的item点击事件中调用自己写的接口方法,居然就可以了

public interface MyItemClickListener {        void onItemClick(View view, int postion);    }    private MyItemClickListener mItemClickListener = null;    public void setOnItemClickListener(MyItemClickListener listener) {        this.mItemClickListener = listener;    }

在点击listView的每个item时拿到对应的数据

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                    String text = dataList.get(position);                    editText.setText(text);                    if(mItemClickListener != null){                        mItemClickListener.onItemClick(view,position);                    }else {                        mItemClickListener.onItemClick(view,0);                    }                    closePopWindow();            }        });

(c)工具类,判断手机号,身份证(最后一位是小写x就可以通过,大写X就不可以)

public class Phoneutil {    public static boolean isMobileNO(String mobiles) {        Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");        Matcher m = p.matcher(mobiles);        return m.matches();    }}

网上的源码 忘了保存链接了

public class IDutil {        /**         * 功能:身份证的有效验证         *         * @param IDStr         *            身份证号         * @return 有效:返回"" 无效:返回String信息         * @throws ParseException         */        @SuppressWarnings("unchecked")        public static String IDCardValidate(String IDStr) throws ParseException {            String errorInfo = "";// 记录错误信息            String[] ValCodeArr = { "1", "0", "x", "9", "8", "7", "6", "5", "4",                    "3", "2" };            String[] Wi = { "7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7",                    "9", "10", "5", "8", "4", "2" };            String Ai = "";            // ================ 号码的长度 15位或18位 ================            if (IDStr.length() != 15 && IDStr.length() != 18) {                errorInfo = "身份证号码长度应该为15位或18位。";                return errorInfo;            }            // =======================(end)========================            // ================ 数字 除最后以为都为数字 ================            if (IDStr.length() == 18) {                Ai = IDStr.substring(0, 17);            } else if (IDStr.length() == 15) {                Ai = IDStr.substring(0, 6) + "19" + IDStr.substring(6, 15);            }            if (isNumeric(Ai) == false) {                errorInfo = "身份证15位号码都应为数字 ; 18位号码除最后一位外,都应为数字。";                return errorInfo;            }            // =======================(end)========================            // ================ 出生年月是否有效 ================            String strYear = Ai.substring(6, 10);// 年份            String strMonth = Ai.substring(10, 12);// 月份            String strDay = Ai.substring(12, 14);// 月份            if (isDate(strYear + "-" + strMonth + "-" + strDay) == false) {                errorInfo = "身份证生日无效。";                return errorInfo;            }            GregorianCalendar gc = new GregorianCalendar();            SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");            try {                if ((gc.get(Calendar.YEAR) - Integer.parseInt(strYear)) > 150                        || (gc.getTime().getTime() - s.parse(                        strYear + "-" + strMonth + "-" + strDay).getTime()) < 0) {                    errorInfo = "身份证生日不在有效范围。";                    return errorInfo;                }            } catch (NumberFormatException e) {                e.printStackTrace();            } catch (java.text.ParseException e) {                e.printStackTrace();            }            if (Integer.parseInt(strMonth) > 12 || Integer.parseInt(strMonth) == 0) {                errorInfo = "身份证月份无效";                return errorInfo;            }            if (Integer.parseInt(strDay) > 31 || Integer.parseInt(strDay) == 0) {                errorInfo = "身份证日期无效";                return errorInfo;            }            // =====================(end)=====================            // ================ 地区码时候有效 ================            Hashtable h = GetAreaCode();            if (h.get(Ai.substring(0, 2)) == null) {                errorInfo = "身份证地区编码错误。";                return errorInfo;            }            // ==============================================            // ================ 判断最后一位的值 ================            int TotalmulAiWi = 0;            for (int i = 0; i < 17; i++) {                TotalmulAiWi = TotalmulAiWi                        + Integer.parseInt(String.valueOf(Ai.charAt(i)))                        * Integer.parseInt(Wi[i]);            }            int modValue = TotalmulAiWi % 11;            String strVerifyCode = ValCodeArr[modValue];            Ai = Ai + strVerifyCode;            if (IDStr.length() == 18) {                if (Ai.equals(IDStr) == false) {                    errorInfo = "身份证无效,不是合法的身份证号码";                    return errorInfo;                }            } else {                return "";            }            // =====================(end)=====================            return "";        }        /**         * 功能:设置地区编码         *         * @return Hashtable 对象         */        @SuppressWarnings("unchecked")        private static Hashtable GetAreaCode() {            Hashtable hashtable = new Hashtable();            hashtable.put("11", "北京");            hashtable.put("12", "天津");            hashtable.put("13", "河北");            hashtable.put("14", "山西");            hashtable.put("15", "内蒙古");            hashtable.put("21", "辽宁");            hashtable.put("22", "吉林");            hashtable.put("23", "黑龙江");            hashtable.put("31", "上海");            hashtable.put("32", "江苏");            hashtable.put("33", "浙江");            hashtable.put("34", "安徽");            hashtable.put("35", "福建");            hashtable.put("36", "江西");            hashtable.put("37", "山东");            hashtable.put("41", "河南");            hashtable.put("42", "湖北");            hashtable.put("43", "湖南");            hashtable.put("44", "广东");            hashtable.put("45", "广西");            hashtable.put("46", "海南");            hashtable.put("50", "重庆");            hashtable.put("51", "四川");            hashtable.put("52", "贵州");            hashtable.put("53", "云南");            hashtable.put("54", "西藏");            hashtable.put("61", "陕西");            hashtable.put("62", "甘肃");            hashtable.put("63", "青海");            hashtable.put("64", "宁夏");            hashtable.put("65", "新疆");            hashtable.put("71", "台湾");            hashtable.put("81", "香港");            hashtable.put("82", "澳门");            hashtable.put("91", "国外");            return hashtable;        }        /**         * 功能:判断字符串是否为数字         *         * @param str         * @return         */        private static boolean isNumeric(String str) {            Pattern pattern = Pattern.compile("[0-9]*");            Matcher isNum = pattern.matcher(str);            if (isNum.matches()) {                return true;            } else {                return false;            }        }        /**         * 功能:判断字符串是否为日期格式         *         * @param strDate         * @return         */        public static boolean isDate(String strDate) {            Pattern pattern = Pattern                    .compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$");            Matcher m = pattern.matcher(strDate);            if (m.matches()) {                return true;            } else {                return false;            }        }}

(d)SelectPatientActivity、AddPatientActivity

SharedPreferences获取绑定的患者,重新挂号sp里面对应的值也随着改变

public class SelectPatientActivity extends AppCompatActivity {    @BindView(R.id.sp_money)    TextView mmoney;    @BindView(R.id.sp_keshi)    TextView mks;    @BindView(R.id.sp_name)    TextView mname;    @BindView(R.id.sp_time)    TextView mtime;    @BindView(R.id.add_none)    TextView mnone;    @BindView(R.id.add)    TextView madd;    @BindView(R.id.sp_toolbar)    Toolbar tb;    @BindView(patient)    LinearLayout ll;    @BindView(R.id.p_name)    TextView mpname;    @BindView(R.id.p_card)    TextView mpcard;    @BindView(R.id.btn_hao)    Button mhao;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_select_patient);        ButterKnife.bind(this);        initToolbar();        getData();        initSelected();    }    /**     * 设置绑定的患者     */    private void initSelected() {        SharedPreferences sp = getSharedPreferences("patient",MODE_PRIVATE);        String id = sp.getString("pid","");        String name = sp.getString("pname","");        String card = sp.getString("pcard","");        if(!id.isEmpty()){            mnone.setVisibility(View.GONE);            ll.setVisibility(View.VISIBLE);            mpcard.setText(card);            mpname.setText(name);        }else {            mnone.setVisibility(View.VISIBLE);            ll.setVisibility(View.GONE);        }    }    /**     * 设置页面数据     */    private void getData() {        Intent intent = getIntent();        String money = intent.getStringExtra("money");        String mbdname = intent.getStringExtra("mbdname");        String mdname = intent.getStringExtra("mdname");        mmoney.setText(money);        mks.setText(mbdname + " - " + mdname);        String date = intent.getStringExtra("date");        TimeDuan timeduan = (TimeDuan) intent.getSerializableExtra("timeduan");        Doctor doctor = (Doctor) intent.getSerializableExtra("doctor");        String end = timeduan.getT_start();        String start = timeduan.getT_end();        mname.setText(doctor.getD_name());        mtime.setText(date+" " + start + "-" + end);    }    List<String> weekid=new ArrayList<>();    @OnClick(R.id.btn_hao)    void guahao(){        Intent intent = getIntent();        String msday = intent.getStringExtra("day");        String mdayid = intent.getStringExtra("dayid");        Doctor doctor = (Doctor) intent.getSerializableExtra("doctor");        SharedPreferences sp = getSharedPreferences("patient",MODE_PRIVATE);        String id = sp.getString("pid","");        Patient patient = new Patient();        patient.setObjectId(id);        String mrelation = sp.getString("pbr","");        //挂号        new Haoutil(SelectPatientActivity.this).addAppoint(patient, doctor, msday, mdayid,mrelation);        //更新两张表        new Haoutil(SelectPatientActivity.this).updateHao(msday,mdayid);        new Haoutil(SelectPatientActivity.this).updateWeek(msday,doctor.getObjectId());        Log.i("Week更新挂号", "id" + weekid);//        Intent mintent = new Intent(SelectPatientActivity.this,PayActivity.class);//        startActivity(mintent);    }    /**     * 初始化toolbar     */    private void initToolbar() {        tb.setTitle("选择就诊人");        setSupportActionBar(tb);        //关键下面两句话,设置了回退按钮,及点击事件的效果        getSupportActionBar().setDisplayHomeAsUpEnabled(true);        tb.setNavigationOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                finish();            }        });    }    @OnClick(R.id.add)    void addP(){        Intent intent = new Intent(SelectPatientActivity.this,AddPatientActivity.class);        startActivityForResult(intent, 1);    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        switch (requestCode) {            case 1:                if (resultCode == RESULT_OK) {                    //接收下一个活动返回数据,设置给已绑定的患者                    String name = data.getStringExtra("pname");                    String card = data.getStringExtra("pcard");                    mnone.setVisibility(View.GONE);                    ll.setVisibility(View.VISIBLE);                    mpcard.setText(card);                    mpname.setText(name);                }                break;            default:        }    }}

查询数据的工具类 Haoutil(插入和更新),可能内容会有点长。。

  /**     * 返回一个医生的一周排班表     * @return     */    public static Observable<List<Week>> getDWeek(final String did){        return Observable.create(new Observable.OnSubscribe<List<Week>>() {            @Override            public void call(final Subscriber<? super List<Week>> subscriber) {                if(!subscriber.isUnsubscribed()){                    BmobQuery<Week> query = new BmobQuery<Week>();                    Doctor doctor = new Doctor();                    doctor.setObjectId(did);                    query.addWhereEqualTo("w_doctor",new BmobPointer(doctor));                    query.setCachePolicy(BmobQuery.CachePolicy.CACHE_ELSE_NETWORK);    // 先从缓存获取数据,如果没有,再从网络获取。                    Observable<List<Week>> observable = query.findObjectsObservable(Week.class);                    observable.subscribe(new Subscriber<List<Week>>() {                        @Override                        public void onCompleted() {                        }                        @Override                        public void onError(Throwable throwable) {                        }                        @Override                        public void onNext(List<Week> weeks) {                            subscriber.onNext(weeks);                        }                    });                }            }        });    }
public class Haoutil {    private static Context mContext;    public Haoutil(Context context) {        mContext = context;    }    public static void addAppoint(Patient patient, Doctor doctor, String day, String dayid, String relation) {        Appointment appointment = new Appointment();        appointment.setA_name(patient);        appointment.setA_day(day);        appointment.setA_dayid(dayid);        appointment.setA_doctor(doctor);        appointment.setA_relation(relation);        appointment.save(new SaveListener<String>() {            @Override            public void done(String objectId, BmobException e) {                if (e == null) {                    Toast.makeText(mContext, "挂号成功", Toast.LENGTH_SHORT).show();                } else {                    Toast.makeText(mContext, "挂号失败,请重新确认挂号信息", Toast.LENGTH_SHORT).show();                    Log.i("bmob", "失败:" + e.getMessage() + "," + e.getErrorCode());                }            }        });    }    public static void updateHao(String day, String id) {        switch (day) {            case "周一":                updateMon(id);                break;            case "周二":                updateTue(id);                break;            case "周三":                updateWeds(id);                break;            case "周四":                updateThur(id);                break;            case "周五":                updateFri(id);                break;            case "周六":                updateSat(id);                break;            case "周日":                updateSun(id);                break;        }    }    private static void updateMon(String id) {        Mon mon = new Mon();        //当天某一行记录        mon.increment("m_count", -1);        mon.update(id, new UpdateListener() {            @Override            public void done(BmobException e) {                if (e == null) {                    Log.i("bmob更新挂号", "更新成功");                } else {                    Log.i("bmob更新挂号", "更新失败:" + e.getMessage() + "," + e.getErrorCode());                }            }        });    }    private static void updateTue(String id) {        Tues tues = new Tues();        //当天某一行记录        tues.increment("t_count", -1);        tues.update(id, new UpdateListener() {            @Override            public void done(BmobException e) {                if (e == null) {                    Log.i("bmob更新挂号", "更新成功");                } else {                    Log.i("bmob更新挂号", "更新失败:" + e.getMessage() + "," + e.getErrorCode());                }            }        });    }    private static void updateWeds(String id) {        Weds weds = new Weds();        //当天某一行记录        weds.increment("w_count", -1);        weds.update(id, new UpdateListener() {            @Override            public void done(BmobException e) {                if (e == null) {                    Log.i("bmob更新挂号", "更新成功");                } else {                    Log.i("bmob更新挂号", "更新失败:" + e.getMessage() + "," + e.getErrorCode());                }            }        });    }    private static void updateThur(String id) {        Thur thur = new Thur();        //当天某一行记录        thur.increment("th_count", -1);        thur.update(id, new UpdateListener() {            @Override            public void done(BmobException e) {                if (e == null) {                    Log.i("bmob更新挂号", "更新成功");                } else {                    Log.i("bmob更新挂号", "更新失败:" + e.getMessage() + "," + e.getErrorCode());                }            }        });    }    private static void updateFri(String id) {        Fri fri = new Fri();        //当天某一行记录        fri.increment("f_count", -1);        fri.update(id, new UpdateListener() {            @Override            public void done(BmobException e) {                if (e == null) {                    Log.i("bmob更新挂号", "更新成功");                } else {                    Log.i("bmob更新挂号", "更新失败:" + e.getMessage() + "," + e.getErrorCode());                }            }        });    }    private static void updateSat(String id) {        Sat sat = new Sat();        //当天某一行记录        sat.increment("s_count", -1);        sat.update(id, new UpdateListener() {            @Override            public void done(BmobException e) {                if (e == null) {                    Log.i("bmob更新挂号", "更新成功");                } else {                    Log.i("bmob更新挂号", "更新失败:" + e.getMessage() + "," + e.getErrorCode());                }            }        });    }    private static void updateSun(String id) {        Sun sun = new Sun();        //当天某一行记录        sun.increment("su_count", -1);        sun.update(id, new UpdateListener() {            @Override            public void done(BmobException e) {                if (e == null) {                    Log.i("bmob更新挂号", "更新成功");                } else {                    Log.i("bmob更新挂号", "更新失败:" + e.getMessage() + "," + e.getErrorCode());                }            }        });    }    public static void updateWeek(String day, String did) {        Week week = new Week();        switch (day) {            case "周一":                week.increment("w_c1", -1);                break;            case "周二":                week.increment("w_c2", -1);                break;            case "周三":                week.increment("w_c3", -1);                break;            case "周四":                week.increment("w_c4", -1);                break;            case "周五":                week.increment("w_c5", -1);                break;            case "周六":                week.increment("w_c6", -1);                break;            case "周日":                week.increment("w_c7", -1);                break;        }        //查询该医生一周的情况,并更改对应的值        new Weekutil().getDWeek(did).subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(new Subscriber<List<Week>>() {                    @Override                    public void onCompleted() {                    }                    @Override                    public void onError(Throwable throwable) {                    }                    @Override                    public void onNext(List<Week> weeks) {                        for (Week week : weeks) {                            String id = week.getObjectId();                            week.update(id, new UpdateListener() {                                @Override                                public void done(BmobException e) {                                    if (e == null) {                                        Log.i("Week更新挂号", "更新成功");                                    } else {                                        Log.i("Week更新挂号", "更新失败:" + e.getMessage() + "," + e.getErrorCode());                                    }                                }                            });                        }                    }                });    }}

实现添加患者,然后返回上一个活动,设置绑定的患者

public class AddPatientActivity extends AppCompatActivity implements DatePickerDialog.OnDateSetListener{    public static final String DATEPICKER_TAG = "datepicker";    @BindView(R.id.br)    XCDropDownListView br;    @BindView(R.id.sfz)    XCDropDownListView sfz;    @BindView(R.id.sp_name)    EditText etname;    @BindView(R.id.sp_phone)    EditText etphone;    @BindView(R.id.sp_idcard)    EditText etidcard;    @BindView(R.id.sp_card)    EditText etcard;    @BindView(R.id.btn_commit)    Button commit;    @BindView(R.id.sp_date)    TextView tvdate;    @BindView(R.id.add_toolbar)    Toolbar tb;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_add_patient);        ButterKnife.bind(this);        initToolbar();        initXCDropDownListView();        initClick();    }    /**     * 初始化toolbar     */    private void initToolbar() {        tb.setTitle("添加就诊人");        setSupportActionBar(tb);        //关键下面两句话,设置了回退按钮,及点击事件的效果        getSupportActionBar().setDisplayHomeAsUpEnabled(true);        tb.setNavigationOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                finish();            }        });    }    String name;    String phone;    String idcard;    String card;    @OnClick(R.id.btn_commit)    void commit(){        //获取键盘输入        name = etname.getText().toString();        phone = etphone.getText().toString();        idcard = etidcard.getText().toString();        card = etcard.getText().toString();        if (name.isEmpty()){            Toast.makeText(AddPatientActivity.this,"名字不能为空",Toast.LENGTH_SHORT).show();        }else if(phone.isEmpty()){            Toast.makeText(AddPatientActivity.this,"手机号不能为空",Toast.LENGTH_SHORT).show();        }else if(idcard.isEmpty()){            Toast.makeText(AddPatientActivity.this,"身份证不能为空",Toast.LENGTH_SHORT).show();        }else if(card.isEmpty()){            Toast.makeText(AddPatientActivity.this,"诊疗卡号不能为空",Toast.LENGTH_SHORT).show();        }else if(tvdate.getText().equals("请选择")){            Toast.makeText(AddPatientActivity.this,"出生日期必须选择",Toast.LENGTH_SHORT).show();        }else{            if (!Phoneutil.isMobileNO(phone)){                Toast.makeText(AddPatientActivity.this,"输入的手机号码有误",Toast.LENGTH_SHORT).show();            }            IDutil cc = new IDutil();            String isID = null;            try {                isID = cc.IDCardValidate(idcard);            } catch (ParseException e) {                e.printStackTrace();            }            if(!isID.isEmpty()){                Toast.makeText(AddPatientActivity.this,""+isID,Toast.LENGTH_SHORT).show();            }        }        findPatient(Integer.parseInt(card));        Log.i("数据",date+name+phone+idcard+card+mbr+msfz+""+mPatients);    }    String mbr = "本人";    String msfz = "身份证";    /**     * 两人下拉框的回调     */    private void initClick() {        br.setOnItemClickListener(new XCDropDownListView.MyItemClickListener() {            @Override            public void onItemClick(View view, int postion) {                String br = brlist.get(postion);                mbr = brlist.get(postion);//                Toast.makeText(AddPatientActivity.this,""+br,Toast.LENGTH_SHORT).show();                Log.i("数据",br+"");            }        });        sfz.setOnItemClickListener(new XCDropDownListView.MyItemClickListener() {            @Override            public void onItemClick(View view, int postion) {                String sfz = sfzlist.get(postion);                msfz = sfzlist.get(postion);//                Toast.makeText(AddPatientActivity.this,""+sfz,Toast.LENGTH_SHORT).show();                Log.i("数据",sfz+"");            }        });    }    ArrayList<String> brlist = new ArrayList<String>();    ArrayList<String> sfzlist = new ArrayList<String>();    /**     * 初始化下拉框数据     */    private void initXCDropDownListView() {        brlist.add(0,"本人");        brlist.add(1,"父母");        brlist.add(2,"子女");        brlist.add(3,"兄弟");        brlist.add(4,"姐妹");        brlist.add(5,"伴侣");        brlist.add(6,"其他");        sfzlist.add(0,"身份证");        sfzlist.add(1,"港澳台身份证");        sfzlist.add(2,"护照");        br.setItemsData(brlist);        sfz.setItemsData(sfzlist);    }    /**     * 日历控件     */    @OnClick(R.id.sp_date)    void initDate() {        final Calendar calendar = Calendar.getInstance();        final DatePickerDialog datePickerDialog = DatePickerDialog.newInstance(this, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), false);        datePickerDialog.setYearRange(1903, 2028);        datePickerDialog.show(getSupportFragmentManager(), DATEPICKER_TAG);    }    String date;    @Override    public void onDateSet(DatePickerDialog datePickerDialog, int year, int month, int day) {        int truemonth = month + 1;        date = year + "-" + truemonth + "-" + day;        tvdate.setTextColor(getResources().getColor(R.color.main_color));        tvdate.setText(date);        Toast.makeText(AddPatientActivity.this, "new date:" + date, Toast.LENGTH_LONG).show();    }    List<Patient> mPatients = new ArrayList<>();    private void findPatient(final int card){        new Patientutil().getPatient(card).subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(new Subscriber<List<Patient>>() {                    @Override                    public void onCompleted() {                    }                    @Override                    public void onError(Throwable throwable) {                        Log.i("填入数据",""+throwable);                        if(throwable != null){                            Toast.makeText(AddPatientActivity.this,"找不到此患者,请到医院办理诊疗卡",Toast.LENGTH_SHORT).show();                            clearText();                        }                    }                    @Override                    public void onNext(List<Patient> patients) {                        for (Patient patient : patients) {                            String mname = patient.getP_name();                            String midcard = patient.getP_idcard();                            String mbirth = patient.getP_birth();                            String pid = patient.getObjectId();                            Log.i("填入数据",""+name+mname+idcard+midcard+date);                            //第一次为空                            SharedPreferences sp = getSharedPreferences("patient",MODE_PRIVATE);                            String id = sp.getString("pid","");                            if(id.isEmpty() || !id.equals(pid)){                                if(!name.equals(mname)){                                    Toast.makeText(AddPatientActivity.this,"您的姓名信息与在医院记录的信息不一致,请重新填写",Toast.LENGTH_SHORT).show();                                }else if(!idcard.equals(midcard)){                                    Toast.makeText(AddPatientActivity.this,"您的身份证信息与在医院记录的信息不一致,请重新填写",Toast.LENGTH_SHORT).show();                                }else if(!date.equals(mbirth)){                                    Toast.makeText(AddPatientActivity.this,"您的出生日期信息与在医院记录的信息不一致,请重新填写",Toast.LENGTH_SHORT).show();                                }else {                                    Intent intent = new Intent();                                    intent.putExtra("pname", mname);                                    intent.putExtra("pcard", String.valueOf(card));                                    setResult(RESULT_OK, intent);                                    sp.edit().putString("pid",pid).commit();                                    sp.edit().putString("pname",mname).commit();                                    sp.edit().putString("pcard", String.valueOf(card)).commit();                                    sp.edit().putString("pbr", mbr).commit();                                    Toast.makeText(AddPatientActivity.this,"您已经成功绑定该患者",Toast.LENGTH_SHORT).show();                                    finish();                                }                            }else {                                Toast.makeText(AddPatientActivity.this,"您已经绑定该患者,请勿重复绑定",Toast.LENGTH_SHORT).show();                                clearText();                            }                        }                    }                });    }    private void clearText() {        etname.setText("");        etidcard.setText("");        etphone.setText("");        etcard.setText("");        tvdate.setText("请选择");    }    public void clear(){        SharedPreferences pref = getSharedPreferences("patient",MODE_PRIVATE);        if(pref!=null){            pref.edit().clear().commit();        }    }}
  • 更新满号的状态、在一些页面添加了刷新控件

把一些工具类的缓存策略 CACHE_ELSE_NETWORK 改为
CACHE_THEN_NETWORK或者NETWORK_ONLY

刷新控件 :

/**     * 首次刷新     * @param hasFocus     */    @BindView(R.id.sfl)    SwipeRefreshLayout mSwipeRefreshLayout;    private boolean isFirst=true;    @Override    public void onWindowFocusChanged(boolean hasFocus) {        super.onWindowFocusChanged(hasFocus);        mSwipeRefreshLayout.setColorSchemeResources(android.R.color.holo_blue_bright,                android.R.color.holo_green_light, android.R.color.holo_orange_light);        if (isFirst){            mSwipeRefreshLayout.setRefreshing(true);            isFirst=false;        }    }    private void getData() {        new Thread(){            @Override            public void run() {                super.run();                try {                    Thread.sleep(1000);                } catch (InterruptedException e) {                    e.printStackTrace();                }                runOnUiThread(new Runnable() {                    @Override                    public void run() {//要加载页面数据的方法                        mSwipeRefreshLayout.setRefreshing(false);                    }                });            }        }.start();    }    protected void initRefreshLayout(final String day) {        mSwipeRefreshLayout.setColorSchemeResources(android.R.color.holo_blue_bright,                android.R.color.holo_green_light, android.R.color.holo_orange_light);        //给swipeRefreshLayout绑定刷新监听        mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {            @Override            public void onRefresh() {                //设置2秒的时间来执行以下事件                new Handler().postDelayed(new Runnable() {                    public void run() {                        //在这里清空之前的数据                        clear();                        //重新拿到数据                        mSwipeRefreshLayout.setRefreshing(false);                    }                }, 1500);            }        });    }

这里写图片描述

简单地实现一下,不是很符合规范。这里只需要在对应的Adapter中判断对应position的号数是否为0,然后去设置选中状态就可以了,例如

int count = d_counts.get(position);        if(count == 0){            viewHolder.man.setVisibility(View.VISIBLE);            viewHolder.ll.setBackgroundResource(R.color.darkgray);            //设置当前item不可点击            viewHolder.ll.setOnClickListener(null);        }

接下来就是调用支付接口了…

原创粉丝点击