«определено слишком много аргументов для конструктора publi c string ()» Kotlin проблема - PullRequest
1 голос
/ 11 января 2020

Я немного растерялся, создайте базу данных, где пользователю придется сохранять результаты исследования, в котором он будет выбирать данные из различных виджетов, таких как счетчики или 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 ()».

1 Ответ

1 голос
/ 11 января 2020

Проблема с классом узла: здесь вы объявили всего 9 параметров:

class FIrebaseVal(nodeID: Int, nodeNumberPicker:NumberPicker,nodezegar:String,nodedata:String,nodeposilek:RadioGroup,nodehiperglikemia:Spinner,nodestres:Spinner,nodesamopoczucie:Spinner,nodeinsulina:Int)

, но здесь вы передаете 10 параметров, пожалуйста, подтвердите значения параметров. Я не могу понять имя переменной.

listaWynikow.add(Note(ID, Stezenie, Zegar,Data,Posilek,Stres,Samopoczucie,Hiperglikemia,Insulina))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...