Получение значений из базы данных и пересылка - PullRequest
0 голосов
/ 22 января 2020

это мой код Я кратко расскажу о том, что я хотел бы сделать. А именно, у меня есть готовый доступ к данным в sqllite. Запись выглядит красиво, как в начале. Окно с возможностью редактирования et c. Теперь я хотел бы сделать что-то подобное в другом упражнении. Извлечение данных из столбца sqllite 1 с числовыми значениями и вставка их в предварительный просмотр текста для расчета результата. Пока вы можете использовать значение воротника в тексте в другой активации и что-то, что было приостановлено и не может двигаться дальше. Если кто-то знает бассейн, он может мне помочь? И я все еще пытаюсь, может быть, что-то будет go хорошо

BAZA WYNIKÓW ---> (MAIN ACTIVITY) ---> здесь у меня есть база данных, которая работает правильно

package com.example.apkadlapacjenta

import android.annotation.SuppressLint
import android.app.AlertDialog
import android.app.SearchManager
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.text.ClipboardManager
import android.view.*
import android.widget.*
import androidx.appcompat.app.AppCompatActivity
import android.widget.SearchView

import kotlinx.android.synthetic.main.activity_baza_wynikow.toolbar
import kotlinx.android.synthetic.main.content_baza_wynikow.*
import kotlinx.android.synthetic.main.row.view.*

@Suppress("DEPRECATION")
class   BazaWynikow : AppCompatActivity() {

    var listaPomiarow = ArrayList<Note>()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_baza_wynikow)
        setSupportActionBar(toolbar)
        supportActionBar?.setDisplayHomeAsUpEnabled(true)


        //Wczytujemy baze danych
        LoadQuery("%")

    }

    override fun onResume() {
        super.onResume()
        LoadQuery("%")
    }

    private fun LoadQuery(title: String) {
        val dbManager = DbMenager(this)
        val projections = arrayOf("ID", "Stezenie", "Title", "Description")
        val selectionArgs = arrayOf(title)
        val cursor =
            dbManager.Query(projections, "Stezenie like?", selectionArgs   , "Stezenie")
        listaPomiarow.clear()
        if (cursor.moveToFirst()) {
            do {
                val ID = cursor.getInt(cursor.getColumnIndex("ID"))
                val Stezenie = cursor.getString(cursor.getColumnIndex("Stezenie"))
                val Title = cursor.getString(cursor.getColumnIndex("Title"))
                val Description = cursor.getString(cursor.getColumnIndex("Description"))
                listaPomiarow.add(Note(ID, Stezenie, Title, Description))
            } while (cursor.moveToNext())
        }


        //Adapter
        val mojepomiary = MojePomiaryAdapter(this, listaPomiarow)
        //ustawienia adaptera
        notes_pomiarow.adapter = mojepomiary

        // Wszystkie zadania
        val total = notes_pomiarow.count
        //actionbar
        val mActionBar = supportActionBar
            if(mActionBar !=null){
                //ustawienia Action Bara
                mActionBar.subtitle = "Masz $total pomiarów"
            }
    }

    override fun onCreateOptionsMenu(menu: Menu?):Boolean{
        menuInflater.inflate(R.menu.notemenu,menu)

        //searchView
        val sv:SearchView = menu!!.findItem(R.id.app_bar_search).actionView as SearchView
        val sm = getSystemService(Context.SEARCH_SERVICE) as SearchManager
        sv.setSearchableInfo(sm.getSearchableInfo(componentName))
        sv.setOnQueryTextListener(object :SearchView.OnQueryTextListener{
            //implementujemy dwie metody
            override fun onQueryTextSubmit(query: String?): Boolean {
                LoadQuery("%$query%")
                return false
            }

            override fun onQueryTextChange(newText: String?): Boolean {
                LoadQuery("%$newText%")
                return false
            }
        })
        return super.onCreateOptionsMenu(menu)
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        when(item.itemId){
            R.id.dodaj_notatke->{
                startActivity(Intent(this,AddNote::class.java))
            }
            R.id.sortuj->{
                showSortDialog()
            }
        }
        return super.onOptionsItemSelected(item)
    }

    private fun showSortDialog() {
        //lista opcji
        val sortOption = arrayListOf("Najnowsze","starsze","Tytul rosnaco","Tytul malejaco")
        val mBuilder = AlertDialog.Builder(this)
        mBuilder.setTitle("Sort by")
        mBuilder.setIcon(R.drawable.ic_sort)

    }

    //Implementation MojePomiaryAdapater
    inner class MojePomiaryAdapter(context: Context, private var listaPomiarowAdapter: ArrayList<Note>) :
        BaseAdapter() {
        var context: Context?= context



        //Generujemy secondary konstruktor

        @SuppressLint("ViewHolder", "InflateParams")
        override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
            //inflate layout row.xml
            val myView = layoutInflater.inflate(R.layout.row,null)
            val MojPomiar = listaPomiarowAdapter[position]
            myView.StezenieTv.text = MojPomiar.nodeStezenie
            myView.titleTv.text = MojPomiar.nodeName
            myView.descTv.text = MojPomiar.nodeDes
            //Przycisk kasowania
            myView.deleteBtn.setOnClickListener{
                val dbMenager = DbMenager(this.context!!)
                val selectionArgs = arrayOf(MojPomiar.nodeID.toString())
                dbMenager.delete("ID=?",selectionArgs)
                LoadQuery("%")
            }
            //Przycisk edytowania
            myView.editBtn.setOnClickListener{
                GoToUpdateFun(MojPomiar)
            }
            //Przycisk kopiowania
            myView.copyBtn.setOnClickListener{

                //wez tytul
                val title = myView.titleTv.text.toString()
                //wez opis pomiaru badania
                val desc = myView.descTv.text.toString()
                val stezenie = myView.StezenieTv.text.toString()
                //powiązanie
                val s = title+"\n"+desc+"\n"+stezenie+"\n"
                val cb = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
                cb.text = s // dodawanie do clickboardu 54

            }
            //share
            myView.shareBtn.setOnClickListener{
                val title = myView.titleTv.text.toString()
                //wez opis pomiaru badania
                val desc = myView.descTv.text.toString()
                //powiązanie
                val s = title+"\n"+desc
                //intencja share
                val  shareIntent = Intent()
                shareIntent.action = Intent.ACTION_SEND
                shareIntent.type = "text"
                shareIntent.putExtra(Intent.EXTRA_TEXT,s)
                startActivity(Intent.createChooser(shareIntent,s))

            }
            return myView
        }

        override fun getItem(position: Int): Any {
            return listaPomiarowAdapter[position]
        }

        override fun getItemId(position: Int): Long {
            return position.toLong()
        }

        override fun getCount(): Int {
            return listaPomiarowAdapter.size

        }


    }

    private fun GoToUpdateFun(mojPomiar: Note) {
        val intent = Intent(this,AddNote::class.java)
        intent.putExtra("ID",mojPomiar.nodeID)//wpisz Id
        intent.putExtra("Stezenie",mojPomiar.nodeStezenie)
        intent.putExtra("name",mojPomiar.nodeName)//wpisz nazwe
        intent.putExtra("des",mojPomiar.nodeDes)// wpisz opis
        startActivity(intent)

    }
}

DBMENAGER ----> Здесь у меня есть проблема с последней забавой readData ()? ?

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.Toast

class DbMenager {

    //database name
    var dbName = "Wyniki Pomiarów"
    //table name
    var dbTable = "Pomiary"
    //kolumny
    var colID = "ID"
    var colSt = "Stezenie"
    var colTitle = "Title"
    var colDes ="Description"
    //database version
    var dbVersion = 1

    //Tworzymy tabele
    val sqlCreateTable = "CREATE TABLE $dbTable($colID INTEGER PRIMARY KEY, $colSt TEXT, $colTitle TEXT, $colDes TEXT)"
    var sqlDB:SQLiteDatabase?=null
    constructor(context: Context){
        var db = DatabseHelperPomiary(context)
        sqlDB = db.writableDatabase
    }
    inner class DatabseHelperPomiary: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
    }


    fun readData():Cursor
    {
        val db:DbMenager = this
        val read:Cursor = db.("SELECT * FROM$dbTable",null)
        return read
    }

}

ANALIZA ACTIVITY ---> это моя целевая деятельность, по которой я хочу вычислить средние значения в текстовом просмотре, и, наконец, я пытаюсь вычислить функции, которые предоставят мне " jedn7 "это имя textview

package com.example.apkadlapacjenta

import android.content.Intent
import android.database.Cursor
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_analiza.*
import java.lang.StringBuffer as StringBuffer1


class Analiza : AppCompatActivity() {
    lateinit var databaseHelper: DbMenager
    lateinit var btn: Button
    lateinit var jedn7:TextView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_analiza)
        setSupportActionBar(toolbar)

        databaseHelper = DbMenager(this)
        btn = findViewById(R.id.buttons)
        jedn7 = findViewById(R.id.jedn7dni)
        btn.setOnClickListener{
            readDataFunction()
        }







        fabaddpomiar.setOnClickListener { view ->
            val intent = Intent(this,Wymienniki::class.java)
            startActivity(intent)

        }
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
    }

    private fun readDataFunction(){
        val data = databaseHelper.readData()
        val stringBuffer = StringBuffer1()
        if(data!=null&&data.count>0)
        {
            while(data.moveToNext())
            {
                stringBuffer.appened("STEZENIE:${data.getStrig(1)}\n")
            }
            jedn7.text = StringBuffer.toString()
        }
    }


    }

Для упрощения, потому что проект не на английском языке sh. Столбец Концентрация содержит только числовое значение, и из него я хочу вычислить среднее значение, но сначала я хочу, чтобы оно появилось в поле textview, а затем я постараюсь добавить их все и разделить на их число. Но все в небольших шагах Кнопка будет в качестве обновления, после чего щелкнув значения будут обновлены, хотя я постараюсь заставить их обновить сами, но это еще одна топика c не на данный момент. Спасибо,

enter image description here enter image description here enter image description here

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