есть ли проблема в моем коде, что мой список не показывал ничего? - PullRequest
0 голосов
/ 02 февраля 2020

это мое первое приложение, которое я пишу с 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

1 Ответ

0 голосов
/ 02 февраля 2020

Вы должны установить LayoutManager для вашего listView:

listView.adapter=adapter
listView.layoutManager = LinearLayoutManager()

Проверьте здесь, чтобы увидеть, как LayoutManager работает: https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView.LayoutManager.html

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