Android Programlama -47 SQLite Select İşlemi

Merhaba arkadaşlar bu gün ki makalem de SQLite databse’in de select işlemine değineceğim.

Bir önceki makalede insert işlemini görmüştük. Buradan okuyabilirsiniz.

import android.app.LoaderManager;
import android.content.CursorLoader;
import android.content.Loader;
import android.database.Cursor;
import android.widget.ListView;
import com.example.user.finalyproject.DataBase.DbHelper;
import com.example.user.finalyproject.DataBase.ProductContract;
import com.example.user.finalyproject.adapters.AllProductAdapter;


public class AllProductActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<Cursor> {
private int loaderKeyCode = 0;
private DbHelper mDbHelper;
private ListView listView;
private AllProductAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_all_product);

listView = findViewById(R.id.list);

mDbHelper = new DbHelper(this);
getLoaderManager().initLoader(loaderKeyCode, null, this);

}

protected void onResume() {
super.onResume();
getLoaderManager().restartLoader(0, null, this);
}

@Override
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
String[] projection = {
ProductContract.ProductEntry._ID,
ProductContract.ProductEntry.COLUMN_PRODUCT_NAME,
ProductContract.ProductEntry.COLUMN_PRODUCT_QUANTITY,
ProductContract.ProductEntry.COLUMN_PRODUCT_PRICE,
ProductContract.ProductEntry.COLUMN_PRODUCT_IMAGE,
ProductContract.ProductEntry.COLUMN_SUPPLIER_NAME,
ProductContract.ProductEntry.COLUMN_SUPPLIER_EMAIL,
ProductContract.ProductEntry.COLUMN_SUPPLIER_PHONE};

return new CursorLoader(this, ProductContract.ProductEntry.CONTENT_URI, projection, null,
null, null);

}

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
// cursor.moveToFirst();

adapter = new AllProductAdapter(this, cursor);
listView.setAdapter(adapter);


}

@Override
public void onLoaderReset(Loader<Cursor> loader) {
adapter.swapCursor(null);
}
}

SQLite database’inde select işlemi alışa geldiğimizden biraz farklıdır. Database’den verileri okuma işlemini cursor üzerinden yapıyoruz. Cursor bir pointer’dır. Tablonun ilk satırını gösterir. Cursor değerini bir artırdıkça bir satır aşağı kayar ve böylelikle tablo bitene kadar cursor hareket eder ve satır satır veriler okunmuş olur.  Oncreate methodunun içerisinde getLoaderManager().initLoader(loaderKeyCode, null, this); methodu sayesinde loader’ ı başlatmış oluruz.  Loader’ın içerinde cursor üzerinden tek satır kayıt okunur. onLoadFinished(Loader<Cursor> loader, Cursor cursor) methodu ile okunan adapter sayesinde listview’ a eklenir. onLoaderReset(Loader<Cursor> loader)  methodu sayesinde ise cursor bir artırılmış olur.  Activity’nin onResume moda düşmesi sonucunda ise cursor değeri sıfırlanıp loader methodu tekrardan çağrılır.

Bir makalenin daha sonuna geldik, esenle kalın..

Kübra Hebeş

Bilgisayar Mühendisi