最近做一個項目其中有一個測試的模塊,但是多個選項每次保存一個選項的信息在表格的單元格里面,信息就會顯得很多,查找起來也會比較麻煩,后來就想了一了辦法,把所有的選項轉(zhuǎn)換成0,1,2,3,4這樣的數(shù)字信息,連成一個字符串保存在一個單元格中,查找到后再通過轉(zhuǎn)換得到患者的輸入信息。
下面看代碼:
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)遠程管理系統(tǒng)"/><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="嚴(yán)重失眠指數(shù)"/><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:分值/嚴(yán)重程度: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、創(chuàng)建DBHelper類,用于創(chuàng)建數(shù)據(jù)庫。
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;
//創(chuàng)建的表格名
private final static String TABLE_NAME02 = "test_table";//一般信息參數(shù)
public final static String PATIENT_ID = "id";
public final static String ISI = "isi";public PatientDB(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
//創(chuàng)建表格
@Override
public void onCreate(SQLiteDatabase db) {// //創(chuàng)建測試表
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類,用于實現(xiàn)對數(shù)據(jù)的保存,修改刪除等
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對象
}
//增加病人測試數(shù)據(jù)
public void insert(PatientTest patienttest){
//創(chuàng)建一個可寫的數(shù)據(jù)庫
db = helper.getWritableDatabase();
//ContentValues以鍵值對的形式存放數(shù)據(jù)
ContentValues cv = new ContentValues();
System.out.println("創(chuàng)建ISI");
cv.put(PATIENT_ISI, patienttest.getIsi());
System.out.println("創(chuàng)建ISI成功!!");
db.insert(TABLE_NAME02, null, cv);
//return row; }public void updateISI(int id ,PatientTest patienttest){
//獲得一個可寫的數(shù)據(jù)庫
SQLiteDatabase db = helper.getWritableDatabase();
//修改條件
String where = PATIENT_ID + " = ?";
//修改條件的參數(shù) Integer.toString(id),把數(shù)字用字符串表示
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)});//根據(jù)編號查找到的病人信息,并存儲到Cursor中
//遍歷查找到的病人信息
if(cursor.moveToNext()){
//將遍歷查找到的病人信息存儲到PatientInformation類中
return new PatientTest(cursor.getString(cursor.getColumnIndex("isi")));
}
return null;
}
//刪除數(shù)據(jù)
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);
}
}//獲取總記錄數(shù)
public long getCount() {db = helper.getWritableDatabase();Cursor cursor = db.rawQuery("select count(id) from test_table", null);//獲取病人信息記錄數(shù)if (cursor.moveToNext())//判斷Cursor中是否有數(shù)據(jù){return cursor.getLong(0);//返回總記錄數(shù)}return 0;//沒有數(shù)據(jù)則返回0}
//獲取病人的最大編號
public int getMaxId() {db = helper.getWritableDatabase();Cursor cursor = db.rawQuery("select max(id) from test_table", null);//獲取病人信息中的最大編號//訪問Cursor中的最后一條數(shù)據(jù)while (cursor.moveToLast()) {return cursor.getInt(0);//獲取訪問到的數(shù)據(jù),即最大編號}return 0;//如果沒有數(shù)據(jù)則返回0}}
5.主函數(shù)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、您的失眠問題影響了您的生活質(zhì)量,您覺得在別人眼中你的失眠程度如何?",
"7、您對目前的睡眠問題的擔(dān)心/痛苦程度:","您的得分:"};
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("選擇的結(jié)果----》" + 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);
}
}}
//獲得要保存的數(shù)據(jù)
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 = "";
//轉(zhuǎn)換成字符串保存到表格中
for(int i = 0;i < result.length;i++){
isi += String.valueOf(result[i]);
}
System.out.println("嚴(yán)重失眠指數(shù)----->" + isi);
PatientTest patientTest = new PatientTest();
patientTest.setIsi(isi);
PatientTestDAO ptdao = new PatientTestDAO(ISIActivity.this);
ptdao.insert(patientTest);
System.out.println("當(dāng)前ID----" + ptdao.getMaxId());
Toast.makeText(ISIActivity.this, "【失眠程度評估】數(shù)據(jù)保存成功!", Toast.LENGTH_SHORT).show();
}
}
最后得到的數(shù)據(jù)如下所示:
第一次寫博客,難免有很多不足,關(guān)于這個數(shù)據(jù)的查詢和轉(zhuǎn)換就下次,要開飯了~~~~
總結(jié)
以上是生活随笔為你收集整理的Android SQLite保存多个选择题的选择信息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。