挂号系统 V1.0(下)
2017-11-05 16:50
246 查看
我的医院挂号系统下篇
接下来写查询科室的挂号流程,上一篇链接 挂号系统上篇
输入科室显示医生列表adapter : 设置ViewHolder,下载每个item的医生头像,这里下载方式不太完美,以后可以进行改进
public class DDAdapter extends BaseAdapter{ private List<Doctor> doctors; private Context context; private Activity activity; private static LayoutInflater inflater=null; private ImageLoader imageLoader; Handler handler = new Handler(); public DDAdapter(Activity a,List<Doctor> doctors){ this.activity = a; this.doctors = doctors; inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); imageLoader=ImageLoader.getInstance(); } @Override public View getView(final int position, View convertView, ViewGroup parent) { final ViewHolder viewHolder; if (convertView == null){ // 先去inflater一个布局加载控件 convertView = inflater.inflate(R.layout.item_adapter, null);//实例化一个布局文件 viewHolder = new ViewHolder(); viewHolder.d_photo = (ImageView)convertView.findViewById(R.id.iv_head); viewHolder.d_name = (TextView)convertView.findViewById(R.id.tv_dname); viewHolder.d_titles = (TextView)convertView.findViewById(R.id.tv_dtitle); convertView.setTag(viewHolder); }else { viewHolder = (ViewHolder) convertView.getTag(); } final Doctor doctor = doctors.get(position); viewHolder.d_name.setText(doctor.getD_name()); viewHolder.d_titles.setText(doctor.getD_titles()); //下载医生的头像,以医生的名字命名的文件 BmobFile bmobfile = doctor.getD_photo(); //允许设置下载文件的存储路径,默认下载文件的目录为:context.getApplicationContext().getCacheDir()+"/bmob/" final File saveFile = new File(Environment.getExternalStorageDirectory(), doctor.getD_name() +".jpg"); if(!saveFile.exists()){ bmobfile.download(saveFile, new DownloadFileListener() { @Override public void onStart() { } @Override public void done(String savePath,BmobException e) { if(e==null){ Log.i("bmob","下载进度cg"); }else{ Log.i("bmob","下载进度sb"); } } @Override public void onProgress(Integer value, long newworkSpeed) { Log.i("bmob","下载进度:"+value+","+newworkSpeed); } }); handler.post(new Runnable() { @Override public void run() { if(saveFile.exists()){ String path = Environment.getExternalStorageDirectory() + "/"+doctor.getD_name() +".jpg"; Bitmap bitmap = BitmapFactory.decodeFile(path); viewHolder.d_photo.setImageBitmap(bitmap); } } }); } return convertView; } /** * 组件集合,对应list.xml中的控件 * @author Administrator */ public final class ViewHolder{ public ImageView d_photo; public TextView d_titles; public TextView d_name; } @Override public int getCount() { // TODO Auto-generated method stub return doctors.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return doctors.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } }
DepartmentActivity :在handler获取发过来的Message后,在这里查询科室的所有医生,设置适配器,处理item的点击事件,传递参数给DoctorDetailActivity
public class DepartmentActivity extends AppCompatActivity implements View.OnClickListener{ private EditText etDepartment; private TextView tvDepartment; private ListView mListVi 4000 ew; private String DepartmentId; private Handler mHandler = new Handler(); private LinearLayout none; private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what){ case 0: List<Department> list= (List<Department>) msg.obj; for (Department department : list) { //获得数据的objectId信息 DepartmentId = department.getObjectId(); Log.i("我的科室ID。。。。。",""+DepartmentId); //在这里查医生 BmobQuery<Doctor> query = new BmobQuery<Doctor>(); //用此方式可以构造一个BmobPointer对象。只需要设置objectId就行 query.setCachePolicy(BmobQuery.CachePolicy.CACHE_ELSE_NETWORK); department.setObjectId(DepartmentId); query.addWhereEqualTo("d_dcode", new BmobPointer(department)); query.include("d_dcode"); query.findObjects(new FindListener<Doctor>() { @Override public void done(final List<Doctor> objects, BmobException e) { Log.i("医生",""+objects); final DDAdapter ddAdapter = new DDAdapter(DepartmentActivity.this, objects); ddAdapter.notifyDataSetChanged(); mHandler.post(new Runnable() { @Override public void run() { mListView.setAdapter(ddAdapter); mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String pid = objects.get(position).getObjectId(); String name = objects.get(position).getD_name(); String specialty = objects.get(position).getD_specialty(); String titles = objects.get(position).getD_titles(); Department department = objects.get(position).getD_dcode(); String departmentname = department.getD_departmentname(); String d_num = objects.get(position).getD_num(); int d_acount = objects.get(position).getD_acount(); int d_mcount = objects.get(position).getD_mcount(); int d_nowacount = objects.get(position).getD_nowacount(); int d_nowmcount = objects.get(position).getD_nowmcount(); SharedPreferences sp = getSharedPreferences("patient",MODE_PRIVATE); sp.edit().putString("pdid",pid).commit(); Intent intent = new Intent(DepartmentActivity.this,DoctorDetailActivity.class); intent.putExtra("dname",name); intent.putExtra("dspecialty",specialty); intent.putExtra("dtitles",titles); intent.putExtra("ddepartmentname",departmentname); intent.putExtra("dnum",d_num); intent.putExtra("dacount",d_acount); intent.putExtra("dmcount",d_mcount); intent.putExtra("dnowacount",d_nowacount); intent.putExtra("dnowmcount",d_nowmcount); startActivity(intent); } }); } }); } }); } break; } } }; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_department); initView(); } private void initView() { etDepartment = (EditText)findViewById(R.id.search_et_department); tvDepartment = (TextView) findViewById(R.id.search_department); mListView = (ListView) findViewById(R.id.lv); none = (LinearLayout)findViewById(R.id.department_none); none.setVisibility(View.VISIBLE); tvDepartment.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.search_department: String dDepartment = etDepartment.getText().toString(); loaddoctorslist(dDepartment); none.setVisibility(View.GONE); break; } } /** * 加载list列表 */ private void loaddoctorslist(String d_departmentname) { //这里拿到objectId传给全局变量,使用handler BmobQuery<Department> query01=new BmobQuery<Department>(); query01.addWhereEqualTo("d_departmentname", d_departmentname); // query01.setCachePolicy(BmobQuery.CachePolicy.CACHE_ELSE_NETWORK); query01.findObjects(new FindListener<Department>() { @Override public void done(List<Department> list, BmobException e) { if (e == null) { Message message = handler.obtainMessage(); message.what = 0; //以消息为载体 message.obj = list;//这里的list就是查询出list //向handler发送消息 handler.sendMessage(message); } else { Log.e("bmob", ""+e); } } }); } }
是不是很简单就完成了科室查询呢
格式转化器
转化为十位数,前面补0
%010d 第一个0表示前面补0 ,10d表示转化为十位整数
int mycard = patient.getP_card(); final String card = String.format("%010d",mycard);
正则表达式很实用
/** * 根据正则表达式获取0000000222 后面的222,只有这个才是写入数据库的 * @param pidcard * @return */ public String getTrueCardNum(String pidcard){ String regex = "[0]+"; String[] str = pidcard.split(regex); if(!pidcard.matches("\\d*")){ System.out.println(pidcard); return pidcard; }else{ System.out.println(str[str.length-1]); return str[str.length-1]; } }
日期转化,去掉后面的时分秒,用的是网上某位兄台的工具类,链接不知在哪了
import java.text.SimpleDateFormat; import java.util.Date; public class DateUtil { public static final String PATTERN_STANDARD08W = "yyyyMMdd"; public static final String PATTERN_STANDARD12W = "yyyyMMddHHmm"; public static final String PATTERN_STANDARD14W = "yyyyMMddHHmmss"; public static final String PATTERN_STANDARD17W = "yyyyMMddHHmmssSSS"; public static final String PATTERN_STANDARD10H = "yyyy-MM-dd"; public static final String PATTERN_STANDARD16H = "yyyy-MM-dd HH:mm"; public static final String PATTERN_STANDARD19H = "yyyy-MM-dd HH:mm:ss"; public static final String PATTERN_STANDARD10X = "yyyy/MM/dd"; public static final String PATTERN_STANDARD16X = "yyyy/MM/dd HH:mm"; public static final String PATTERN_STANDARD19X = "yyyy/MM/dd HH:mm:ss"; /** * @Title: date2String * @Description: 日期格式的时间转化成字符串格式的时间 * @author YFB * @param date * @param pattern * @return */ public static String date2String(Date date, String pattern) { if (date == null) { throw new IllegalArgumentException("timestamp null illegal"); } pattern = (pattern == null || pattern.equals(""))?PATTERN_STANDARD19H:pattern; SimpleDateFormat sdf = new SimpleDateFormat(pattern); return sdf.format(date); } /** * @Title: string2Date * @Description: 字符串格式的时间转化成日期格式的时间 * @author YFB * @param strDate * @param pattern * @return */ public static Date string2Date(String strDate, String pattern) { if (strDate == null || strDate.equals("")) { throw new RuntimeException("strDate is null"); } p cbdd attern = (pattern == null || pattern.equals(""))?PATTERN_STANDARD19H:pattern; SimpleDateFormat sdf = new SimpleDateFormat(pattern); Date date = null; try { date = sdf.parse(strDate); } catch (Exception e) { throw new RuntimeException(e); } return date; } /** * @Title: getCurrentTime * @Description: 取得当前系统时间 * @author YFB * @param format 格式 17位(yyyyMMddHHmmssSSS) (14位:yyyyMMddHHmmss) (12位:yyyyMMddHHmm) (8位:yyyyMMdd) * @return */ public static String getCurrentTime(String format) { SimpleDateFormat formatDate = new SimpleDateFormat(format); String date = formatDate.format(new Date()); return date; } /** * @Title: getWantDate * @Description: 获取想要的时间格式 * @author YFB * @param dateStr * @param wantFormat * @return */ public static String getWantDate(String dateStr,String wantFormat){ if(!"".equals(dateStr)&&dateStr!=null){ String pattern = PATTERN_STANDARD14W; int len = dateStr.length(); switch(len){ case 8:pattern = PATTERN_STANDARD08W;break; case 12:pattern = PATTERN_STANDARD12W;break; case 14:pattern = PATTERN_STANDARD14W;break; case 17:pattern = PATTERN_STANDARD17W;break; case 10:pattern = (dateStr.contains("-"))?PATTERN_STANDARD10H:PATTERN_STANDARD10X;break; case 16:pattern = (dateStr.contains("-"))?PATTERN_STANDARD16H:PATTERN_STANDARD16X;break; case 19:pattern = (dateStr.contains("-"))?PATTERN_STANDARD19H:PATTERN_STANDARD19X;break; default:pattern = PATTERN_STANDARD14W;break; } SimpleDateFormat sdf = new SimpleDateFormat(wantFormat); try { SimpleDateFormat sdfStr = new SimpleDateFormat(pattern); Date date = sdfStr.parse(dateStr); dateStr = sdf.format(date); } catch (Exception e) { e.printStackTrace(); } } return dateStr; } /** * @Title: getAfterTime * @Description: 获取该时间的几分钟之后的时间 * @author YFB * @param dateStr * @param minute * @return */ public static String getAfterTime(String dateStr,int minute){ String returnStr = ""; try { String pattern = PATTERN_STANDARD14W; int len = dateStr.length(); switch(len){ case 8:pattern = PATTERN_STANDARD08W;break; case 10:pattern = PATTERN_STANDARD10H;break; case 12:pattern = PATTERN_STANDARD12W;break; case 14:pattern = PATTERN_STANDARD14W;break; case 16:pattern = PATTERN_STANDARD16H;break; case 17:pattern = PATTERN_STANDARD17W;break; case 19:pattern = PATTERN_STANDARD19H;break; default:pattern = PATTERN_STANDARD14W;break; } SimpleDateFormat formatDate = new SimpleDateFormat(pattern); Date date = null; date = formatDate.parse(dateStr); Date afterDate = new Date(date.getTime()+(60000*minute)); returnStr = formatDate.format(afterDate); } catch (Exception e) { returnStr = dateStr; e.printStackTrace(); } return returnStr; } /** * @Title: getBeforeTime * @Description: 获取该时间的几分钟之前的时间 * @author YFB * @param dateStr * @param minute * @return */ public static String getBeforeTime(String dateStr,int minute){ String returnStr = ""; try { String pattern = PATTERN_STANDARD14W; int len = dateStr.length(); switch(len){ case 8:pattern = PATTERN_STANDARD08W;break; case 10:pattern = PATTERN_STANDARD10H;break; case 12:pattern = PATTERN_STANDARD12W;break; case 14:pattern = PATTERN_STANDARD14W;break; case 16:pattern = PATTERN_STANDARD16H;break; case 17:pattern = PATTERN_STANDARD17W;break; case 19:pattern = PATTERN_STANDARD19H;break; default:pattern = PATTERN_STANDARD14W;break; } SimpleDateFormat formatDate = new SimpleDateFormat(pattern); Date date = null; date = formatDate.parse(dateStr); Date afterDate = new Date(date.getTime()-(60000*minute)); returnStr = formatDate.format(afterDate); } catch (Exception e) { returnStr = dateStr; e.printStackTrace(); } return returnStr; } }
调用即可
create = appointment.getCreatedAt(); final String date = DateUtil.getWantDate(create, "yyyyMMdd");
总结
(a)学会了Bmob各种查询方法,外键查询,复合查询等等
(b)学会了Bmob的原子计时器,更新某个Interger的值
(c)学会了如何下载文件(图片)
(d)复习了intent传递序列化对象,字段值,handler更新UI以及Handler发送Message获取异步任务中的值、适配器知识
(e)复习了轻量级的SharedPreferences 保存信息(非常实用)
最后是学会了如何建表,这才是最关键的,很遗憾没有用到多对多关系的查询
收工了
相关文章推荐
- 挂号系统 V1.0(上)
- 门急诊挂号与收费系统V1.0
- JAVA编写学生管理系统V1.0
- 基于C/S架构的远程网络竞赛系统V1.0
- 启明星手机版安卓android会议室预定系统 V1.0发布
- ISkyShop B2B2C 商城系统V1.0正式版隆重发布
- 校园蘑菇系统V1.0
- 隧道点云处理系统V1.0使用说明
- 96626访问统计分析系统V1.0正式投入使用!
- 天枫AJAX天气预报系统V1.0
- 消息推送系统V1.0功能介绍
- java swing mysql实现的学生信息管理系统v1.0附带视频指导教程
- 医疗挂号系统
- perl+PHP 做的小系统V1.0接近完工!
- 任务分解系统V1.0
- Eclipse+jetty+maven+Struts2+Spring2+Hibernate3+annotation注册系统V1.0
- 网上招生报名系统V1.0发布
- 二代旅游网站管理系统V1.0正式发布啦