Проблема с NumberPicker, Spinner и RadioGroup ====> переопределить удовольствие getView Kotlin / Adapter / SQLite - PullRequest
0 голосов
/ 11 января 2020

Я хотел бы внедрить Spinner, NumberPicker и Radio Group в мой адаптер, чтобы они отображались после сохранения в View. У меня проблема с написанием кода правильно.

ОСНОВНАЯ ДЕЯТЕЛЬНОСТЬ

   package com.example.apkadlapacjenta

   import android.annotation.SuppressLint import android.content.Context 
   import android.os.Bundle import android.view.View 
   import android.view.ViewGroup 
   import android.widget.BaseAdapter 
   import androidx.appcompat.app.AppCompatActivity
   import kotlinx.android.synthetic.main.activity_historia_pomiarow.*
   import kotlinx.android.synthetic.main.content_glukoza.view.* 
   import kotlinx.android.synthetic.main.row.view.* 
   import kotlinx.android.synthetic.main.row.view.deleteBtn 
   import kotlinx.android.synthetic.main.row1.view.*


 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 selectionArgs = arrayOf(title)
    val cursor =
        dbManager.Query(projections, "Title like?", selectionArgs   , "Title")
    listaWynikow.clear()
    if (cursor.moveToFirst()) {
        do {
            val ID = cursor.getInt(cursor.getColumnIndex("Id"))
            val Stezenie = cursor.getInt(cursor.getColumnIndex("Stezenie"))
            val Zegar = cursor.getString(cursor.getColumnIndex("Zegar"))
            val Data =cursor.getString(cursor.getColumnIndex("Data"))
            val Posilek = cursor.getString(cursor.getColumnIndex("Posilek"))
            val Stres = cursor.getString(cursor.getColumnIndex("Stres"))
            val Samopoczucie = cursor.getString(cursor.getColumnIndex("Samopoczucie"))
            val Hiperglikemia = cursor.getString(cursor.getColumnIndex("Hiperglikemia"))
            listaWynikow.add(FIrebaseVal(ID, Stezenie, Zegar,Data,Posilek,Stres,Samopoczucie,Hiperglikemia))
        } while (cursor.moveToNext())
    }

    //Adapter
    var ListaWynikowAdapter = MylistApdater(this,listaWynikow)
}
inner class MylistApdater (context: Context, private var ListaWynikowAdapter: ArrayList<FIrebaseVal>): BaseAdapter() {
    var listWynikiArray = ArrayList<FIrebaseVal>()
    var context: Context?= null

    @SuppressLint("ViewHolder")
    override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
        val myView = layoutInflater.inflate(R.layout.row1,null)
        val Wynik = ListaWynikowAdapter[position]
        myView.stezenienumberpicker.text= Wynik.nodeNumberPicker
        myView.godzina.text=Wynik.nodezegar
        myView.data.text=Wynik.nodedata
        myView.posilekRG.text=Wynik.nodeposilek
        myView.SP1.text=Wynik.nodehiperglikemia
        myView.SP2.text=Wynik.nodestres
        myView.SP3.text=Wynik.nodesamopoczucie
        //Przycisk kasowania
        myView.deleteBtn.setOnClickListener{
            val dbMenager = DbMenager(this.context!!)
            val selectionArgs = arrayOf(Wynik.nodeID.toString())
            dbMenager.delete("ID=?",selectionArgs)
            LoadQuery("%")
    }

    override fun getItem(position: Int): Any {
    }

    override fun getItemId(position: Int): Long {
    }

    override fun getCount(): Int {
    }
  }

}

Проблема здесь

@SuppressLint("ViewHolder")
        override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
            val myView = layoutInflater.inflate(R.layout.row1,null)
            val Wynik = ListaWynikowAdapter[position]
            myView.stezenienumberpicker.text= Wynik.nodeNumberPicker
            myView.godzina.text=Wynik.nodezegar
            myView.data.text=Wynik.nodedata
            myView.posilekRG.text=Wynik.nodeposilek
            myView.SP1.text=Wynik.nodehiperglikemia
            myView.SP2.text=Wynik.nodestres
            myView.SP3.text=Wynik.nodesamopoczucie
 }

УЗЕЛ

package com.example.apkadlapacjenta

import android.widget.NumberPicker
import android.widget.RadioGroup
import android.widget.Spinner

class FIrebaseVal(
    nodeID: Int, nodeNumberPicker: Int,
    nodezegar:String,
    nodedata:String,
    nodeposilek: String,
    nodehiperglikemia: String,
    nodestres: String,
    nodesamopoczucie: String,
    nodeinsulina:Int) {
    var nodeID: Int?= nodeID
    var nodeNumberPicker: Int = nodeNumberPicker
    var nodezegar:String?=nodezegar
    var nodedata:String?=nodedata
    var nodeposilek: String =nodeposilek
    var nodehiperglikemia: String =nodehiperglikemia
    var nodestres: String =nodestres
    var nodesamopoczucie: String =nodesamopoczucie
    var nodeinsulina:Int?=nodeinsulina
}

У вас нужно установить, например, numberpicker в узле как numberpicker, а не как int, а остальные аналогично? Хорошо ли это

Я бы хотел хорошо реализовать позиции

  1. "stezenienumberpicker" в качестве NumberPicker

  2. "myView. posilekRG.text = Result.nodeposilek "в качестве RadioGroup

  3. Все SP1,2,3 в качестве счетчиков

Как мне это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...