9-Amaliy mashgʻulot Matni maydon komponenetalari bilan ishlash-kompy.info
Keyin, activity_main.xml faylida quyidagi belgini belgilang:
ListView bu yerda qabul qilingan ma'lumotlarni ko'rsatish uchun belgilangan, sarlavhasi qabul qilingan ob'ektlar sonini ko'rsatadi. MainActivity sinf kodini quyidagicha o'zgartiring:
package com.example.sqliteapp; import androidx.appcompat.app.AppCompatActivity;import android.widget.SimpleCursorAdapter;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.widget.ListView;import android.widget.TextView; public class MainActivity extends AppCompatActivity { ListView userList; TextView header; DatabaseHelper databaseHelper; SQLiteDatabase db; Cursor userCursor; SimpleCursorAdapter userAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); header = findViewById(R.id.header); userList = findViewById(R.id.list); databaseHelper = new DatabaseHelper(getApplicationContext()); } @Override public void onResume() { super.onResume(); // открываем подключение db = databaseHelper.getReadableDatabase(); //получаем данные из бд в виде курсора userCursor = db.rawQuery("select * from "+ DatabaseHelper.TABLE, null); // определяем, какие столбцы из курсора будут выводиться в ListView String[] headers = new String[] {DatabaseHelper.COLUMN_NAME, DatabaseHelper.COLUMN_YEAR}; // создаем адаптер, передаем в него курсор userAdapter = new SimpleCursorAdapter(this, android.R.layout.two_line_list_item, userCursor, headers, new int[]{android.R.id.text1, android.R.id.text2}, 0); header.setText("Найдено элементов: " + userCursor.getCount()); userList.setAdapter(userAdapter); } @Override public void onDestroy(){ super.onDestroy(); // Закрываем подключение и курсор db.close(); userCursor.close(); }}
onCreate() usuli SQLiteOpenHelper obyektini yaratadi. Ma'lumotlar bazasi bilan ishlash uchun ob'ektlarni ishga tushirishning o'zi onCreate() usulidan keyin ishga tushiriladigan onResume() usulida sodir bo'ladi.Ma'lumotlar bazasi ob'ektini olish uchun siz getReadableDatabase() usulidan (ma'lumotlar bazasini o'qish uchun olish) yoki getWritableDatabase() dan foydalanishingiz kerak. Bunday holda biz faqat ma'lumotlar bazasidan ma'lumotlarni o'qiymiz, biz birinchi usuldan foydalanamiz:
onCreate() usuli SQLiteOpenHelper obyektini yaratadi. Ma'lumotlar bazasi bilan ishlash uchun ob'ektlarni ishga tushirishning o'zi onCreate() usulidan keyin ishga tushiriladigan onResume() usulida sodir bo'ladi.Ma'lumotlar bazasi ob'ektini olish uchun siz getReadableDatabase() usulidan (ma'lumotlar bazasini o'qish uchun olish) yoki getWritableDatabase() dan foydalanishingiz kerak. Bunday holda biz faqat ma'lumotlar bazasidan ma'lumotlarni o'qiymiz, biz birinchi usuldan foydalanamiz: