это мое первое приложение, которое я пишу с kotlin. Это приложение о контакте. Я пишу этот код, но я не понимаю, почему мой просмотр списка не показывается. Я использую две таблицы базы данных, связанные друг с другом, вставляю данные и показываю в просмотр списка, но мой просмотр списка не показывал. Кто-нибудь знает, в чем моя проблема?
это мой код базы данных:
class DBhelper(context:Context):SQLiteOpenHelper(context,"My table",null,1){
override fun onCreate(db: SQLiteDatabase?) {
var a=("CREATE TABLE IF NOT EXISTS name("+"_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"+"firstName TEXT NOT NULL,"+"lastName TEXT NOT NULL)")
db?.execSQL(a)
var b=("CREATE TABLE IF NOT EXISTS number("+"id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"+"phoneNumbers TEXT NOT NULL,"+"userId Int,"+"FOREIGN KEY(userId) REFERENCES name(_id))")
db?.execSQL(b)
}
override fun onUpgrade(p0: SQLiteDatabase?, p1: Int, p2: Int) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
и это моя основная деятельность
package com.example.contact1
import android.content.Intent
import android.database.Cursor
import android.database.sqlite.SQLiteDatabase
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.ArrayAdapter
import android.widget.SimpleCursorAdapter
import com.example.myapplication.DBhelper
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
var db: SQLiteDatabase?=null
var cursor: Cursor?=null
var cursorN: Cursor?=null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
faB.setOnClickListener {
var intent= Intent(this,page2::class.java)
startActivity(intent)
}
var sqlite= DBhelper(this)
db=sqlite.readableDatabase
cursor=db?.query("name", arrayOf("_id","firstName","lastName"),null,null,null,null,null)
cursorN=db?.query("number", arrayOf("id","phoneNumbers"),null,null,null,null,null)
var adapter= SimpleCursorAdapter(this,android.R.layout.simple_list_item_1,cursor, arrayOf("lastName"),IntArray(android.R.id.text1),0)
listView.adapter=adapter
}
override fun onDestroy() {
db!!.close()
cursor!!.close()
super.onDestroy()
}
}
и этот код действия 2 в имя страницы 2:
package com.example.contact1
import android.content.ContentValues
import android.content.Intent
import android.database.sqlite.SQLiteDatabase
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.text.Selection
import android.util.Log
import android.widget.Toast
import com.example.myapplication.DBhelper
import kotlinx.android.synthetic.*
import kotlinx.android.synthetic.main.activity_page2.*
import java.lang.Exception
import java.util.logging.Logger
import kotlin.math.log
class page2 : AppCompatActivity() {
var sqlite= DBhelper(this)
var db: SQLiteDatabase?=null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_page2)
buttonSave.setOnClickListener{
db=sqlite.writableDatabase
val contentValues1= ContentValues()
if(editTextFirstName.text.isEmpty()&& editTextLastName.text.isEmpty() )
{ contentValues1.put("firstName","unknown")
}else{ contentValues1.put("firstName",editTextFirstName.text.toString()) }
contentValues1.put("lastName",editTextLastName.text.toString())
db!!.insert("name",null,contentValues1)
val contentValues2= ContentValues()
contentValues2.put("phoneNumbers",editTextPhone.text.toString())
var s="select _id FROM name WHERE firstName='"+contentValues1+"' AND lastname='"+contentValues1+""
contentValues2.put("userId",s)
db!!.insert("number", null,contentValues2)
Toast.makeText(this,"saved succesfull", Toast.LENGTH_LONG).show()
}
buttonDiscard.setOnClickListener { }
}
override fun onDestroy() {
db!!.close()
super.onDestroy()
}
}
когда я сохраняю контакт и нажимаю назад, я не вижу ничего подобного: http://uupload.ir/files/f936_a.jpg
и когда закрываем приложение и снова открываем я вижу это http://uupload.ir/files/zr1z_b.jpg