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