我有一个listView,它由我的sqlite数据库中插入的数据填充。
我创建了一个contextMenu,因此我可以从ListView中删除Items。
当我点击Delete时,我想从我的数据库和listView中删除该项。但我不能,我不知道为什么。但我希望通过获取Item I的字符串来删除它,因为它不适用于主键。
这是我的代码:
DatabaseHelper
public void deleteCours(String cours)
{
Open();
db.execSQL("DELETE from "+TABLE_COURS+" WHERE "+COLONNE_COURS+"='"+cours+"'");
db.close();
}
我的ListView和contextmenu
//ce Listener permet de détecter si on clique sur un élément de la liste
lv.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//récupération de l'ID
long itemid= lv.getItemIdAtPosition(i);
//conversion en int
int id= (int)itemid;
//conversion en string du cours que je selectionne
String a =lv.getItemAtPosition(i).toString();
dbhelper.deleteCours(a);
//Intent pour naviguer de pag
/*Intent b = new Intent(AffichageCours.this,AffichageNotes.class);
//création d0un Bundle pour transférer des données
Bundle args = new Bundle();
args.putString("nom_cours",a);
args.putInt("id",id);
//insertion du Bundle dans l'Intent
b.putExtras(args);
//démarrage de l'intent
startActivity(b);*/
}
});
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.context_menu,menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
switch(item.getItemId())
{
case R.id.supprimer:
// I WANT TO DELETE HERE !
return true;
default:
return super.onContextItemSelected(item);
}
}
}
所以,我需要获取项目的字符串,以便我可以在我的方法中使用它。我想要自动刷新我的列表视图。
提前谢谢!如果您需要更多代码,请告诉我!
答案 0 :(得分:1)
整改查询。
public void deleteCours(int getID) {
Open();
db.execSQL("DELETE from Table_name WHERE fieldName='"+getID+"'");
db.close();
}
FYI
如果您要从Listview中删除
adapter.remove(arrayList.get(position)); //Remove
adapter.notifyDataSetChanged(); //Refresh
答案 1 :(得分:0)
试试这种方式
Object portletResponse = webAppAccess.getHttpServletRequest()
.getAttribute(Constants.PORTLET_RESPONSE);
if (portletResponse instanceof javax.portlet.ActionResponse) {
javax.portlet.ActionResponse actionResponse = (javax.portlet.ActionResponse) portletResponse;
actionResponse.sendRedirect(URL);
}
答案 2 :(得分:0)
使用此选项删除特定行。
db.delete(TABLE_COURS, COLONNE_IDCOURS+ "=" + id, null);
答案 3 :(得分:0)
SQLiteDatabase
应为getWritableDatabase()
。
试试这个:
public void deleteCours(int id)
{
Open();
db.delete(TABLE_COURS, COLONNE_IDCOURS + " = ?", new String[]{String.valueOf(id)});
db.close();
}
答案 4 :(得分:0)
public void deleteCours(int id) {
Open();
String Query = "DELETE * FROM "+TABLE_COURS+" WHERE "+COLONNE_IDCOURS+"="+id;
Cursor cursor = db.rawQuery(Query, null);
// db.close();
if (cursor.getCount() < 1) {
Toast.makeText(context,"Delete Successfull",Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context,"Not Possible",Toast.LENGTH_SHORT).show();
}
}
您可以检查您的数据是否正在删除..
如果不删除数据,则使用一些非主键字段..