最近做一个项目其中有一个测试的模块,但是多个选项每次保存一个选项的信息在表格的单元格里面,信息就会显得很多,查找起来也会比较麻烦,后来就想了一了办法,把所有的选项转换成0,1,2,3,4这样的数字信息,连成一个字符串保存在一个单元格中,查找到后再通过转换得到患者的输入信息。

下面看代码:

1.布局文件isi.xml,也就是问题和选项的布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/background"><TextView android:layout_width="match_parent"android:layout_height="wrap_content"android:paddingTop="20dp"android:gravity="center"android:textSize="40sp"android:textColor="@color/white"android:text="慢性失眠症认知行为治疗(CBT)远程管理系统"/><RelativeLayout android:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/relativeLayout"><TextView android:id="@+id/text"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_centerInParent="true"android:gravity="center"android:textSize="40sp"android:textColor="@color/white"android:text="严重失眠指数"/><TextView android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/text"android:gravity="center"android:textColor="@color/orange"android:textSize="30sp"android:text="Tips:分值/严重程度:0/无,1/轻度,2/中度,3/重度,4/极重度"/>
</RelativeLayout><RelativeLayout android:layout_width="match_parent"android:layout_height="match_parent"android:visibility="invisible"android:id="@+id/relativeLayout2"><RelativeLayout android:id="@+id/linearLayout"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:orientation="vertical"><TextViewandroid:id="@+id/questiontitle"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="30sp"android:textColor="@color/white"android:layout_centerHorizontal="true"android:text="对于一下问题,请您选择出近一个月来最符合您睡眠状况的选项"/><RadioGroup android:id="@+id/radiogroup"android:layout_width="wrap_content"android:layout_height="wrap_content"android:visibility="invisible"android:layout_below="@id/questiontitle"android:layout_alignLeft="@id/questiontitle"android:paddingTop="20dp"android:orientation="vertical"android:stretchColumns="*"><RadioButton android:id="@+id/button01"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="5dp"android:textSize="30sp"   android:gravity="center" android:layout_weight="1"android:button="@null"android:background="@drawable/radio"android:text="无"/><RadioButton android:id="@+id/button02" android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="5dp"android:textSize="30sp"   android:gravity="center" android:layout_weight="1"android:button="@null"android:background="@drawable/radio"android:text="轻度"/><RadioButton  android:id="@+id/button03"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="5dp"android:textSize="30sp"   android:gravity="center" android:layout_weight="1"android:button="@null"android:background="@drawable/radio"android:text="中度"/><RadioButton android:id="@+id/button04" android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="5dp"android:textSize="30sp"   android:gravity="center" android:layout_weight="1"android:button="@null"android:background="@drawable/radio"android:text="重度"/><RadioButton android:id="@+id/button05" android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="5dp"android:textSize="30sp"   android:gravity="center" android:layout_weight="1"android:button="@null"android:background="@drawable/radio"android:text="极重度"/></RadioGroup>
</RelativeLayout>
<Button android:id="@+id/nextbutton"android:layout_width="200dp"android:layout_height="wrap_content"android:layout_below="@id/linearLayout"android:layout_alignParentRight="true"android:textColor="@android:color/white"android:textSize="30sp"android:text="下一题"/></RelativeLayout>
</RelativeLayout>

2、PatientTest类,用来封装isi信息

PatientTest.java

package com.example.project_isi;public class PatientTest {
int id;
String isi;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getIsi() {
return isi;
}
public void setIsi(String isi) {
this.isi = isi;
}
public PatientTest(String isi) {
super();
this.isi = isi;
}
public PatientTest() {
super();
}
}
3、创建DBHelper类,用于创建数据库。
DBHelper.java
package com.example.project_isi;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;public class PatientDB extends SQLiteOpenHelper{
private final static String DATABASE_NAME = "patientdata.db";
private final static int DATABASE_VERSION = 1;
//创建的表格名
private final static String TABLE_NAME02 = "test_table";//一般信息参数
public final static String PATIENT_ID = "id";
public final static String ISI = "isi";public PatientDB(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
//创建表格
@Override
public void onCreate(SQLiteDatabase db) {// //创建测试表
String sql02 = "CREATE TABLE " + TABLE_NAME02 + " (" + PATIENT_ID + " INTEGER primary key autoincrement, "  + ISI +  " text);";
db.execSQL(sql02);}@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//删除旧版表格
//String sql = "DROP TABLE IF EXISTS " + TABLE_NAME;
//db.execSQL(sql);
//onCreate(db);
}
}

4、PatientTestDAO类,用于实现对数据的保存,修改删除等

PatientTestDAO.ava

package com.example.project_isi;import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;public class PatientTestDAO {
private final static String TABLE_NAME02 = "test_table";
private String PATIENT_ID  = "id";
private String PATIENT_ISI = "isi";
private PatientDB helper;
private SQLiteDatabase db;
public PatientTestDAO(Context context){
helper = new PatientDB(context);// 初始化DBOpenHelper对象
}
//增加病人测试数据
public void insert(PatientTest patienttest){
//创建一个可写的数据库
db = helper.getWritableDatabase();
//ContentValues以键值对的形式存放数据
ContentValues cv = new ContentValues();
System.out.println("创建ISI");
cv.put(PATIENT_ISI, patienttest.getIsi());
System.out.println("创建ISI成功!!");
db.insert(TABLE_NAME02, null, cv);
//return row; }public void updateISI(int id ,PatientTest patienttest){
//获得一个可写的数据库
SQLiteDatabase db = helper.getWritableDatabase();
//修改条件
String where = PATIENT_ID + " = ?";
//修改条件的参数  Integer.toString(id),把数字用字符串表示
String[] whereValue = { Integer.toString(id) };ContentValues cv = new ContentValues();
cv.put(PATIENT_ISI, patienttest.getIsi());
db.update(TABLE_NAME02, cv, where, whereValue);
}
//查找病人信息
public PatientTest find(int id){
db = helper.getWritableDatabase();
Cursor cursor = db.rawQuery("select id,isi from test_table where id = ?",new String[] {String.valueOf(id)});//根据编号查找到的病人信息,并存储到Cursor中
//遍历查找到的病人信息
if(cursor.moveToNext()){
//将遍历查找到的病人信息存储到PatientInformation类中
return new PatientTest(cursor.getString(cursor.getColumnIndex("isi")));
}
return null;
}
//删除数据
public void delete(Integer... ids){
/*db = helper.getWritableDatabase();
String where = PATIENT_ID + " = ?";
String[] whereValue ={ Integer.toString(id) };
db.delete(TABLE_NAME, where, whereValue);*/
if(ids.length > 0){ //判断是否存在要删除的id
StringBuffer sb = new StringBuffer();
for(int i = 0;i < ids.length;i++){
sb.append('?').append(','); //将删除条件添加到StringBuffer中
}
sb.deleteCharAt(sb.length() - 1);
db = helper.getWritableDatabase();
db.execSQL("delete from test_table where _id in (" + sb + ")",(Object[]) ids);
}
}//获取总记录数
public long getCount() {db = helper.getWritableDatabase();Cursor cursor = db.rawQuery("select count(id) from test_table", null);//获取病人信息记录数if (cursor.moveToNext())//判断Cursor中是否有数据{return cursor.getLong(0);//返回总记录数}return 0;//没有数据则返回0}
//获取病人的最大编号
public int getMaxId() {db = helper.getWritableDatabase();Cursor cursor = db.rawQuery("select max(id) from test_table", null);//获取病人信息中的最大编号//访问Cursor中的最后一条数据while (cursor.moveToLast()) {return cursor.getInt(0);//获取访问到的数据,即最大编号}return 0;//如果没有数据则返回0}}

5.主函数ISIActivity,问题的选择与保存

5、ISIActivity.java

package com.example.project_isi;import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.Window;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;public class ISIActivity extends Activity{private RelativeLayout rl;
private RelativeLayout rl2;
private int i = 0;
private String[] question = {"1、入睡困难:","2、维持睡眠困难:","3、早醒:","4、您对目前的睡眠模式满意/不满意程度如何?:",
"5、您认为您的失眠在多大程度上影响了您的日常功能:","6、您的失眠问题影响了您的生活质量,您觉得在别人眼中你的失眠程度如何?",
"7、您对目前的睡眠问题的担心/痛苦程度:","您的得分:"};
private int j;
private String buttontext;
private int resulttext[] = new int[10];
private RadioButton button01;
private RadioButton button02;
private RadioButton button03;
private RadioButton button04;
private RadioButton button05;
private RadioGroup radioGroup;
private TextView questiontext;
private int score;@Override
protected void onCreate(Bundle savedInstanceState) {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.isi);questiontext = (TextView) findViewById(R.id.questiontitle);
radioGroup = (RadioGroup) findViewById(R.id.radiogroup);
button01 = (RadioButton) findViewById(R.id.button01);
button02 = (RadioButton) findViewById(R.id.button02);
button03 = (RadioButton) findViewById(R.id.button03);
button04 = (RadioButton) findViewById(R.id.button04);
button05 = (RadioButton) findViewById(R.id.button05);
//resultbutton = (Button) findViewById(R.id.resultbutton);
rl = (RelativeLayout) findViewById(R.id.relativeLayout);
rl2 = (RelativeLayout) findViewById(R.id.relativeLayout2);
radioGroup.setOnCheckedChangeListener(new RadioGroupListener());
rl.setOnTouchListener(new OnTouchListener() {@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
rl.setVisibility(View.INVISIBLE);
rl2.setVisibility(View.VISIBLE);
return false;
}
});final Button nextbutton = (Button) findViewById(R.id.nextbutton);
nextbutton.setOnClickListener(new OnClickListener() {@Override
public void onClick(View v) {
//questiontext.setText(question[i]);
//i ++;
if(button01.isChecked()==false && button02.isChecked()==false && button03.isChecked()==false
&& button04.isChecked()==false&& button05.isChecked()==false && i != 0){new AlertDialog.Builder(ISIActivity.this)
.setTitle("温馨提示")
.setMessage("您还没有选择任何一个选项!")
.setPositiveButton("确定", null)
.show();
return;
}
else{
questiontext.setText(question[i]);
if(i < question.length +1){
i++;
}
if(i == 1){
radioGroup.setVisibility(View.VISIBLE);
}
//i++;
radioGroup.clearCheck();
}
score += j;
System.out.println("result----->" + score);
resulttext[i]= j;
System.out.println("选择的结果----》" + resulttext[i]);
//PInformation();
//question[7] = "您的得分: " + score;
if(i == question.length - 1){
nextbutton.setText("确定");
//score += j;
int total = score +j;
question[7] = "您的得分: " + total;
System.out.println("您的得分---" + total);
//PInformation();
//finish();
}if(i == question.length ){
//finish();
PInformation();
radioGroup.setVisibility(View.INVISIBLE);
nextbutton.setVisibility(View.INVISIBLE);
}
}
});
}
public class RadioGroupListener implements OnCheckedChangeListener{@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if(checkedId == button01.getId()){
j = 0;
buttontext = button01.getText().toString();
System.out.println("buttontext ---" + buttontext);
}
if(checkedId == button02.getId()){
j = 1;
System.out.println("result11----->" + j);
buttontext = button02.getText().toString();
System.out.println("buttontext ---" + buttontext);
}
if(checkedId == button03.getId()){
j = 2;
buttontext = button03.getText().toString();
System.out.println("buttontext ---" + buttontext);
}
if(checkedId == button04.getId()){
j = 3;
buttontext = button04.getText().toString();
System.out.println("buttontext ---" + buttontext);
}
if(checkedId == button05.getId()){
j = 4;
buttontext = button05.getText().toString();
System.out.println("buttontext ---" + buttontext);
}
}}
//获得要保存的数据
public void PInformation(){
int[] result = new int[8];
result[0] = resulttext[2];
result[1] = resulttext[3];
result[2] = resulttext[4];
result[3] = resulttext[5];
result[4] = resulttext[6];
result[5] = resulttext[7];
result[6] = resulttext[8];
result[7] = score;
String isi = "";
//转换成字符串保存到表格中
for(int i = 0;i < result.length;i++){
isi += String.valueOf(result[i]);
}
System.out.println("严重失眠指数----->" + isi);
PatientTest patientTest = new PatientTest();
patientTest.setIsi(isi);
PatientTestDAO ptdao = new PatientTestDAO(ISIActivity.this);
ptdao.insert(patientTest);
System.out.println("当前ID----" + ptdao.getMaxId());
Toast.makeText(ISIActivity.this, "【失眠程度评估】数据保存成功!", Toast.LENGTH_SHORT).show();
}
}

最后得到的数据如下所示:

第一次写博客,难免有很多不足,关于这个数据的查询和转换就下次,要开饭了~~~~

Android SQLite保存多个选择题的选择信息相关推荐

  1. Android SQLite在应用中数据保存查询,但是拷贝的xxx.db没有数据或没有更新,.db_wal和.db_shm文件

    Android SQLite在应用中数据保存能查询,但是拷贝的xxx.db没有数据或没有更新问题,.db_wal和.db_shm文件是什么 文章目录 问题 原因 解决方法 SQLite的.db_wal ...

  2. Android+Sqlite 实现古诗阅读应用(二)

    传送门:Android+Sqlite 实现古诗阅读应用(一) Hi,又回来了,最近接到很多热情洋溢的小伙伴们的来信,吼开心哈,我会继续努力的=-=! 上回的东西我们做到了有个textview能随机选择 ...

  3. android用于查询数据的方法,android: SQLite查询数据

    掌握了查询数据的方法之后,你也就将数据库的 CRUD 操 作全部学完了.不过千万不要因此而放松,因为查询数据也是在 CRUD 中最复杂的一种 操作. 我们都知道 SQL 的全称是 Structured ...

  4. Android SQLite数据库的详细使用

    SQLite 简介 SQLite 是一款内置到移动设备上的轻量型的数据库,是遵守ACID(原子性.一致性.隔离性.持久性)的关联式数据库管理系统,多用于嵌入式系统中 SQLite 数据库是无类型的,可 ...

  5. android SQLite数据库的使用

    今天,简单讲讲android如何使用SQLite数据库.  最近,自己在做一个功能时又用到了SQLite数据库,发现自己还是掌握的不很全面.其实之前的app里面也一直用到了数据库,但是自己没有花时 ...

  6. android sqlite 查询时间,android – sqlite日期查询

    我是新的sqlite.我有一个有3列的表 1. Id 2. FoodName 3. Date and time (ex: '1' 'Chicken' '2012-08-10 13:54') 我读到某处 ...

  7. Android SQLite简单操作示例

    Android SQLite数据库简单示例 解决 SqLiteActivity.java: package com.cuit.edu.cn;import com.cuit.edu.cn.db.Date ...

  8. android sqlite存对象,【Android基础】Android SQLite存储自定义对象

    Android SQLite存储自定义对象 在SQLite数据库中可存储的数据类型有NULL.INTEGER.REAL(浮点型).TEXT.BOOL,一共是五种数据类型.在Android开发中,我们存 ...

  9. Android SQLite嵌入式数据库

    Android SQLite嵌入式数据库(一) SQLite的CURD Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加( ...

最新文章

  1. 【青少年编程】【Scratch】10 画笔模块
  2. Python批量下载XKCD漫画只需20行命令
  3. GLIBC 升级安装与 SCL 知识盲区
  4. Amazon Elasticsearch Service 入门实践
  5. 【Tiny4412】搭建Qt网络文件系统
  6. 视觉工程师面试指南_选择正确视觉效果的终极指南
  7. 人工智能第二课:认知服务和机器人框架探秘
  8. 效率,互联网生态模式的本质!——保险科技生态建设...
  9. 同步电脑与手机,让手机变身无线Modem
  10. Unity3D 中 用quaternion 来对一个坐标点进行旋转的初步体会
  11. 181108每日一句
  12. docker 命令_Docker的入门:安装Docker及记住常用的镜像命令和容器命令
  13. [转载]PLSQL安装破解
  14. Win10华硕atk驱动怎么安装_win10台式机网卡驱动如何安装
  15. fastdfs上传图片成功,用内网下载失败(超时、404)
  16. 用一个div绘制背景流动网格特效
  17. MATLAB遗传算法工具箱安装包及安装方法(图解)
  18. 【Shiro】shiro的Session管理
  19. 二叉树(从建树、遍历到存储)Java
  20. 配置Maven从Nexus下载构件

热门文章

  1. ubuntu系统中samba服务器搭建
  2. OS / Linux / SIGKILL 和 SIGTERM、SIGINT
  3. 职业标准体系一般有几个层次划分_全国首个粤菜标准体系规划发布
  4. 聊聊 cookie 管理那些事
  5. bs4是python自带的吗_Python bs4,检查类是否有值
  6. Nginx中ngx_http_upstream_module模块
  7. SOA架构下的人事信息管理系统的构建与分析
  8. 语音识别传统方法(GMM+HMM+NGRAM)概述
  9. 1、【设计模式】组合模式
  10. php与Git下基于webhook的自动化部署