J'essaie d'afficher mes données sqlite dans textview avec l'application kotlin android. Mais j'ai une erreur avec ça. Lorsque je lance mon application, elle se casse. Quel est le problème?
Voici ma fonction read_data dans dbhelper :
fun read_data():MutableList<Kullanici> {
val userList:MutableList<Kullanici> = ArrayList()
val db = this.readableDatabase
val query = "SELECT * FROM $table_name"
val result = db.rawQuery(query,null)
if(result.moveToFirst()) {
do {
val kullanici = Kullanici()
kullanici.id = result.getString(result.getColumnIndexOrThrow(column_id)).toInt()
kullanici.hamle = result.getString(result.getColumnIndexOrThrow(column_hamle)).toInt()
kullanici.sure = result.getString(result.getColumnIndexOrThrow(column_sure)).toInt()
userList.add(kullanici)
}while (result.moveToNext())
}
result.close()
db.close()
return userList
}
Et voici mon activité principale :
override fun onCreate(savedInstanceState: Bundle?) {
val lv = findViewById<ListView>(R.id.listView)
val db = DataBaseHelper(this)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
supportActionBar?.hide()
val kolay_butonu = findViewById<Button>(R.id.button2)
kolay_butonu.setOnClickListener {
val intent = Intent(this, Kolay::class.java)
startActivity(intent)
}
val liste = db.read_data()
val adapter_: ArrayAdapter<*>
adapter_ = ArrayAdapter(this, android.R.layout.simple_list_item_1, liste)
lv.adapter = adapter_
}
et enfin l'erreur que j'ai rencontrée :
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
tu devrais appeler findViewById
après setContentView
. La vue n'est gonflée que lorsqu'elle setContentView
est appelée, donc lorsque vous trouvez la vue avant d' setContentView
être appelée, elle renverra null.
il suffit de déplacer cette ligne
val lv = findViewById<ListView>(R.id.listView)
aprèssetContentView
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots