欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-24 13:16:28
...

网上预约挂号系统

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

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

说干就干。

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

    网上挂号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);
            }
        });
    }

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

简单地实现一下,不是很符合规范。这里只需要在对应的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);

        }

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

相关标签: 控件 bmob