jeudi 8 janvier 2015

Delete row from SQLite in android with costum listadapter

I would like to be able to delete one row at a time in my activity.


The activity is populated by a Costum list Adapter And I am also using a DatabaseHelper class. I already made a deleteProduct method in the DbHelper.class. How can i call this function in my Adapater so that when there is a click in the imageView (there is an onclicklistener) the clicked row will be deletet?


COSTUM ADAPTER:



package android.ehb.be.verdoodt.Activities;

import android.content.Context;
import android.ehb.be.verdoodt.DbFiles.Product;
import android.ehb.be.verdoodt.R;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;

/**
* Created by Nick on 8/01/15.
*/
public class ProductAdapter extends ArrayAdapter {
private final Context context;
private final ArrayList<Product> ProductArrayList;

public ProductAdapter(Context context, ArrayList<Product> ProductArrayList) {

super(context, R.layout.list_row_games, ProductArrayList);

this.context = context;
this.ProductArrayList = ProductArrayList;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

// 1. Create inflater
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

// 2. Get rowView from inflater
final View view = inflater.inflate(R.layout.list_row_games, parent, false);

// 3. Get the two text view from the rowView
final TextView Title = (TextView) view.findViewById(R.id.product_titel);


// 4. Set the text for textView
Title.setText(ProductArrayList.get(position).getProductnaam());

ImageView imageView = (ImageView) view.findViewById(R.id.deleteProduct);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("Adapter", "List Item Image Clicked");
//DELETE HERE?

}
});

// 5. return rowView
return view;
}
}


DBHELPER CLASS:



package android.ehb.be.verdoodt.DbFiles;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

import java.util.ArrayList;

/**
* Created by Nick on 2/01/15.
*/

public class DbHelper extends SQLiteOpenHelper {

//TELKENS JE DB AANPAST DIT OOK ANPASSEN
public static final int DATABASE_VERSION = 7;

//DATABASE NAAM
public static final String DATABASE_NAME = "GegevensManager";

//GEGEVENS TABELNAAM
private static final String TABLE_NAME = "gegevens";

public DbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

//ONCREATE AANGEROEPEN WANNEER DB VOOR EERSTE KEER WORDT AANGEMAAKT
//CREATIE VAN DE TABLES, ...
@Override
public void onCreate(SQLiteDatabase db) {

Log.i(this.getClass().toString(), "Database created !");

String CREATE_GEGEVENS_TABLE =
"CREATE TABLE " + DatabaseContract.GegevensData.TABLE_NAME
+ "("
// + DatabaseContract.GegevensData.COLUMN_NAME_SOURCE + " TEXT,"
+ DatabaseContract.GegevensData.COLUMN_NAME_PRODUCT + " TEXT"
//+ DatabaseContract.GegevensData.COLUMN_NAME_DESCRIPTION + " TEXT,"
//+ DatabaseContract.GegevensData.COLUMN_NAME_PRICE + " TEXT"
+ ")";

try {
db.execSQL(CREATE_GEGEVENS_TABLE);

} catch (Exception e) {
e.printStackTrace();
}
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

Log.i("DbHelper", "Upgrade database");

//VERWIJDER OUDERE TABEL ALS ZE BESTAAT
//VERGETE VERSIE VAN DB NIET AAN TE PASSEN
db.execSQL("DROP TABLE IF EXISTS " + DatabaseContract.GegevensData.TABLE_NAME);

//MAAK DE TABLE OPNIEUW
onCreate(db);
}

//DOWNGRADE
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
onUpgrade(db, oldVersion, newVersion);
}

public void clear() {
/*
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL(SQL_DELETE_ALBUM_ENTRIES);
db.execSQL(SQL_DELETE_ARTIST_ENTRIES);
db.execSQL(SQL_CREATE_ALBUM_ENTRIES);
db.execSQL(SQL_CREATE_ARTIST_ENTRIES);*/
}

//FAVORIET PROCUT TOEVOEGEN
public Product addFavorietProduct(String productnaam) {

Product FavorietProduct = new Product();
FavorietProduct.setProductnaam(productnaam);

SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();

ContentValues values = new ContentValues();
values.put(DatabaseContract.GegevensData.COLUMN_NAME_PRODUCT, productnaam);

String Mijnproduct = String.valueOf(sqLiteDatabase.insert(DatabaseContract.GegevensData.TABLE_NAME, null, values));
FavorietProduct.setProductnaam(Mijnproduct);
return FavorietProduct;
}

public ArrayList<Product> getAlleFavorieteProducten() {

SQLiteDatabase db = this.getReadableDatabase();

String selectQuery = "SELECT * FROM " + DatabaseContract.GegevensData.TABLE_NAME;

Cursor c = db.rawQuery(selectQuery, null);

ArrayList<Product> FavProducten = new ArrayList<Product>();

if (c != null) {
while (c.moveToNext()) {
Product product = new Product();
product.setProductnaam(c.getString(c.getColumnIndex(DatabaseContract.GegevensData.COLUMN_NAME_PRODUCT)));

FavProducten.add(product);
}
}
return FavProducten;
}

public boolean deleteProduct(String productnaam)
{
SQLiteDatabase db = this.getWritableDatabase();
return db.delete(DatabaseContract.GegevensData.TABLE_NAME, DatabaseContract.GegevensData.COLUMN_NAME_PRODUCT + "=" + productnaam, null) > 0;
}
}


FAVPRODUCTENACTIVITY



public class FavProductenActivity extends Activity implements View.OnClickListener {

static DbHelper mijnDbHelper;
static ArrayList<Product> FavProducten;
static ListView listFavProducten;

@Override
public void onCreate(Bundle savedInstanceState) {
Log.i("FavProductenActivity", "View Created");
//Inflate fragment Lay-out
super.onCreate(savedInstanceState);
setContentView(android.ehb.be.verdoodt.R.layout.fav_producten_layout);

mijnDbHelper = new DbHelper(this);
mijnDbHelper.clear();

FavProducten = mijnDbHelper.getAlleFavorieteProducten();
loadFavProducten();
listFavProducten = (ListView)findViewById(R.id.listFavProducten);

String GekozenProduct = (String) getIntent().getStringExtra("productnaam");

if (GekozenProduct == null) {

Log.i("Gekozen favoriete product: ", "Geen geselecteerd");
loadFavProducten();

} else {
Log.i("Gekozen favoriete product: ", GekozenProduct);

Product gekozenProductToevoegen = mijnDbHelper.addFavorietProduct(GekozenProduct);

Log.i("mijnDbHelper Add Favoriet product : ", String.valueOf(gekozenProductToevoegen));
Log.i("mijnDbHelper Add Favoriet product V2: ", gekozenProductToevoegen.getProductnaam());

FavProducten.add(gekozenProductToevoegen);
loadFavProducten();
}
}

public void loadFavProducten() {

//ArrayAdapter<Product> adapter;

if (listFavProducten == null){
//DO THIS
}
else if (listFavProducten != null){

/*adapter = new ArrayAdapter<Product>(this, android.R.layout.simple_list_item_1, FavProducten);
listFavProducten.setAdapter(adapter);
Log.i("FavProductenSize = ", String.valueOf(FavProducten.size()));
*/

ProductAdapter adapter = new ProductAdapter(this, mijnDbHelper.getAlleFavorieteProducten());
listFavProducten.setAdapter(adapter);
mijnDbHelper.close();
}
}


@Override
public void onClick(View v) {
//Log.i("FavProductenActivity2","Product deletet");
}
}

Aucun commentaire:

Enregistrer un commentaire