Я немного растерялся, создайте базу данных, где пользователю придется сохранять результаты исследования, в котором он будет выбирать данные из различных виджетов, таких как счетчики или RG. Кодировать переменные типа Int или String для меня не проблема, но уже в случае сборщика чисел Spinner и RG. Может кто-нибудь уладить меня?
ОСНОВНАЯ ДЕЯТЕЛЬНОСТЬ
Package com.example.apkadlapacjenta
import android.os.Bundle
import com.google.android.material.snackbar.Snackbar
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.RecyclerView
import com.google.firebase.database.DatabaseReference
import com.google.firebase.database.FirebaseDatabase
import kotlinx.android.synthetic.main.activity_historia_pomiarow.*
class HistoriaPomiarow : AppCompatActivity() {
var listaWynikow = ArrayList<FIrebaseVal>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_historia_pomiarow)
setSupportActionBar(toolbar)
//Wczytujemy baze danych
LoadQuery("%")
supportActionBar?.setDisplayHomeAsUpEnabled(true)
}
override fun onResume() {
super.onResume()
LoadQuery("%")
}
private fun LoadQuery(title:String){
val dbManager = DbMenager(this)
val projections = arrayOf("Id", "Stezenie", "Zegar","Data","Posilek","Stres","Samopoczucie","Hiperglikemia","Insulina")
val cursor =
dbManager.Query(projections, "Title like?", selectionArgs , "Title")
listaWynikow.clear()
if (cursor.moveToFirst()) {
do {
***val ID = cursor.getInt(cursor.getColumnIndex("Id")) ---> HERE i have problem
val Stezenie = cursor.getInt(cursor.getColumnIndex("Stezenie")) ---> NumberPicker
val Zegar = cursor.getString(cursor.getColumnIndex("Zegar"))
val Data =cursor.getString(cursor.getColumnIndex("Data"))
val Posilek = cursor.getString(cursor.getColumnIndex("Posilek")) -----> RB
val Stres = cursor.getString(cursor.getColumnIndex("Stres"))
val Samopoczucie = cursor.getString(cursor.getColumnIndex("Samopoczucie")) --->SPINNER
val Hiperglikemia = cursor.getString(cursor.getColumnIndex("Hiperglikemia"))--->SPINNER
val Insulina = cursor.getInt(cursor.getColumnIndex("Insulina")) --->SPINNER
**listaWynikow.add(Note(ID, Stezenie, Zegar,Data,Posilek,Stres,Samopoczucie,Hiperglikemia,Insulina))
} while (cursor.moveToNext())*****
}
}
}
"---> Спиннер, Numberpicker, RG" et c et c is CODE
DateBase Menager
package com.example.apkadlapacjenta
import android.content.ContentValues
import android.content.Context
import android.database.Cursor
import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteOpenHelper
import android.database.sqlite.SQLiteQueryBuilder
import android.widget.RadioGroup
import android.widget.Toast
class DatebaseMenagerPomiary {
//Database name
var dbName = "Historia Pomiarów"
//table name
var dbTable = "Wyniki"
//kolumny
var colID = "Id"
var colStezenie = "Stezenie"
var colZegar = "Zegar"
var colData = "Data"
var colPosilek = "Posilek"
var colStres = "Stres"
var colSamopoczucie = "Samopoczucie"
var colHiperglikemia = "Hiperglikemia"
var colInsulina = "Insulina"
//wersja
var dbVersion = 1
//Tworzymy tabele
val sqlCreateTable =
"CREATE TABLE$dbTable($colID INTEGER PRIMARY KEY, $colStezenie NumberPicker, $colZegar TEXT, $colData TEXT, $colPosilek RADIO GROUP, $colStres SPINNER,$colSamopoczucie SPINNER, $colHiperglikemia SPINNER, $colInsulina TEXT)"
var sqlDB: SQLiteDatabase? = null
constructor(context: Context){
var db = DatabaseHelperWyniki(context)
sqlDB = db.writableDatabase
}
inner class DatabaseHelperWyniki : SQLiteOpenHelper {
var context: Context? = null
constructor(context: Context) : super(context, dbName, null, dbVersion) {
this.context = context
}
override fun onCreate(db: SQLiteDatabase?) {
db!!.execSQL(sqlCreateTable)
Toast.makeText(this.context,"baza danych utworzona...",Toast.LENGTH_SHORT).show()
}
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
db!!.execSQL("zamknij tabele jeśli nie istnieje" + dbTable)
}
}
fun insert(values:ContentValues):Long{
val ID = sqlDB!!.insert(dbTable,"",values)
return ID
}
fun Query(projection:Array<String>,selection:String,selectionArgs:Array<String>,sorOrder:String): Cursor {
val qb = SQLiteQueryBuilder();
qb.tables=dbTable
val cursor = qb.query(sqlDB,projection,selection,selectionArgs,null,null,sorOrder)
return cursor
}
fun delete(selection: String,selectionArgs: Array<String>):Int{
val count = sqlDB!!.delete(dbTable,selection,selectionArgs)
return count
}
fun update(values:ContentValues,selection: String,selectionArgs: Array<String>): Int {
val count = sqlDB!!.update(dbTable,values,selection,selectionArgs)
return count
}
}
NODE CLASS
NODE CLASS
package com.example.apkadlapacjenta
import android.provider.MediaStore
import android.widget.NumberPicker
import android.widget.RadioGroup
import android.widget.Spinner
class FIrebaseVal(nodeID: Int, nodeNumberPicker:NumberPicker,nodezegar:String,nodedata:String,nodeposilek:RadioGroup,nodehiperglikemia:Spinner,nodestres:Spinner,nodesamopoczucie:Spinner,nodeinsulina:Int) {
var nodeID: Int?= nodeID
var nodeNumberPicker:NumberPicker?= nodeNumberPicker
var nodezegar:String?=nodezegar
var nodedata:String?=nodedata
var nodeposilek:RadioGroup?=nodeposilek
var nodehiperglikemia:Spinner?=nodehiperglikemia
var nodestres:Spinner?=nodestres
var nodesamopoczucie:Spinner?=nodesamopoczucie
var nodeinsulina:Int?=nodeinsulina
}
Остальной код, который я знаю, как это сделать, т.е. адаптер и различные функции, такие как SearchView
et c, необходимы помочь с кодировкой Numberpicker, Spinner и RG, потому что в строке:
listaWynikow.add(Note(ID, Stezenie, Zegar,Data,Posilek,Stres,Samopoczucie,Hiperglikemia,Insulina))
} while (cursor.moveToNext())
я получаю сообщение об ошибке «слишком много аргументов для publi c определитель конструктора string ()».