挂号系统 改进

来源:互联网 发布:台北故宫博物院知乎 编辑:程序博客网 时间:2024/04/28 04:40

系统的一点点改进

由于当时时间比较急,就写得很粗糙,现在改善一点点。
系统上篇
系统下篇

  • ListView的缓存头像

当时使用ImageLoader突然间短路了,现在又想起来了,所以当时就体验了一下Bmob的下载文件的方法,还挺不错的

这里写图片描述

配置全局ImageLoader

public class MyApplication extends Application {    @Override    public void onCreate() {        // TODO Auto-generated method stub        super.onCreate();        initImageLoader(getApplicationContext());    }    private void initImageLoader(Context context) {        // TODO Auto-generated method stub        DisplayImageOptions defaulOptions = new DisplayImageOptions.Builder()                .cacheInMemory(true).cacheOnDisk(true).build();        ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(                context).defaultDisplayImageOptions(defaulOptions)                .threadPriority(Thread.NORM_PRIORITY - 2)                .denyCacheImageMultipleSizesInMemory()                .diskCacheFileNameGenerator(new Md5FileNameGenerator())                .tasksProcessingOrder(QueueProcessingType.LIFO).build();        ImageLoader.getInstance().init(configuration);    }}

现在只要传递url参数给DoctorDetailActivity,在DDAdapter缓存每个item的头像就可以了

String d_url = doctor.getD_photo().getFileUrl();                        //创建DisplayImageOptions对象并进行相关选项配置                        DisplayImageOptions options = new DisplayImageOptions.Builder()                                .showImageOnLoading(R.drawable.icon_stub)// 设置图片下载期间显示的图片                                .showImageForEmptyUri(R.drawable.icon_empty)// 设置图片Uri为空或是错误的时候显示的图片                                .showImageOnFail(R.drawable.icon_x)// 设置图片加载或解码过程中发生错误显示的图片                                .cacheInMemory(true)// 设置下载的图片是否缓存在内存中                                .cacheOnDisk(true)// 设置下载的图片是否缓存在SD卡中                                .build();// 创建DisplayImageOptions对象                        //利用ImageView加载图片                        imageLoader.displayImage(d_url,head,options);
String url = intent.getStringExtra("url");
  • 实现实时时间器,如上图的时间
    第一:写一个线程类
/**     * 实时线程     */    public class TimeThread extends  Thread{        @Override        public void run() {            super.run();            do{                try {                    Thread.sleep(1000);                    Message msg = new Message();                    msg.what = msgKey;                    mHandler.sendMessage(msg);                } catch (InterruptedException e) {                    e.printStackTrace();                }            }while (true);        }    }

第二:在handler中接收到Message,每隔一秒更新界面

//实时线程    private static final int msgKey = 2;    private TextView time02;
 private Handler mHandler =  new Handler(){        @Override        public void handleMessage(Message msg) {            switch (msg.what){                case msgKey:                    long time = System.currentTimeMillis();                    Date date = new Date(time);                    SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 \nHH时mm分ss秒 \nEEE");                    time02.setText(format.format(date));                    break;            }        }    };

第三:开启线程

new TimeThread().start();
  • 设置挂号挂满显示一张“满”的图片,并设置不可点击去挂号

这里写图片描述

m和a分别为上下午剩余的号数

//设置满号不可点击        if(m == 0){            mman.setVisibility(View.VISIBLE);            dmcountClick.setEnabled(false);        }        if(a == 0){            aman.setVisibility(View.VISIBLE);            dacountClick.setEnabled(false);        }

加号操作后又可以挂号,把“满”的图片去掉

case R.id.madd:                addMorning();                findDoctor();                dmcountClick.setEnabled(true);                mman.setVisibility(View.GONE);                break;            case R.id.aadd:                addAfternoon();                findDoctor();                dacountClick.setEnabled(true);                aman.setVisibility(View.GONE);                break;
  • 添加查询教授

比如病人要去心血管科,但是他又需要一位教授,就可以用这个功能
所以只需要在查询科室的Activity中添加对应的复合查询即可

//在这里查医生                        BmobQuery<Doctor> query = new BmobQuery<Doctor>();                        //用此方式可以构造一个BmobPointer对象。只需要设置objectId就行                        department.setObjectId(DepartmentId);                        query.addWhereEqualTo("d_dcode", new BmobPointer(department));                        query.include("d_dcode");                        BmobQuery<Doctor> query2 = new BmobQuery<Doctor>();                        query2.addWhereEqualTo("d_isprofess", true);                        List<BmobQuery<Doctor>> queries = new ArrayList<BmobQuery<Doctor>>();                        queries.add(query);                        queries.add(query2);                        BmobQuery<Doctor> mainQuery = new BmobQuery<Doctor>();                        mainQuery.and(queries);

设置选中的是教授

SharedPreferences sp02 =  getSharedPreferences("patient",MODE_PRIVATE);                                                sp02.edit().putBoolean("pisp",true).commit();

判断为教授,将级别设为教授,其余不可点击

SharedPreferences pref = getSharedPreferences("patient",MODE_PRIVATE);        boolean pisp= pref.getBoolean("pisp",false);        if(pisp){            rb23.setChecked(true);            rb21.setEnabled(false);            rb22.setEnabled(false);            rb24.setEnabled(false);        }

还有之前的DoctorDetailActivity最先都是用intent传参数,导致参数有点多,后面使用了intent传递序列化对象,这样会使传的参数减少。
有时间再写个网上预约的系统,排班表是关键,挺复杂的。

传送门

原创粉丝点击