0
내 활동에서 한 번에 한 행을 삭제하고 싶습니다.costum listadapter를 사용하여 android에서 SQLite 행 삭제
활동에는 Costum 목록 어댑터가 채워집니다. 또한 DatabaseHelper 클래스도 사용하고 있습니다. DbHelper.class에서 이미 deleteProduct 메소드를 만들었습니다. 내 Adapater에서이 함수를 호출하여 click이있는 imageView (onclicklistener가있을 때)가 삭제되도록하려면 어떻게해야합니까?
COSTUM 어댑터 :
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 void deleteProduct(String productnaam)
{
SQLiteDatabase db = this.getWritableDatabase();
//return db.delete(DatabaseContract.GegevensData.TABLE_NAME, DatabaseContract.GegevensData.COLUMN_NAME_PRODUCT + "=" + productnaam, null) > 0;
db.delete(DatabaseContract.GegevensData.TABLE_NAME, DatabaseContract.GegevensData.COLUMN_NAME_PRODUCT + "='" + productnaam + "'", null);
db.close();
}
}
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");
}
}