【发布时间】:2017-04-06 11:11:46
【问题描述】:
我有一个 listView,它由插入到我的 sqlite 数据库中的数据填充。
我创建了一个 contextMenu,这样我就可以从我的 ListView 中删除项目。
当我单击删除时,我想从我的数据库和我的 listView 中删除该项目。但我不能,我不知道为什么。但是我想通过获取Item I的字符串来删除,因为它不适用于主键。
这是我的代码:
数据库助手
public void deleteCours(String cours)
{
Open();
db.execSQL("DELETE from "+TABLE_COURS+" WHERE "+COLONNE_COURS+"='"+cours+"'");
db.close();
}
我的 ListView 和上下文菜单
//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);
}
}
}
所以,我需要获取项目的字符串,以便在我的方法中使用它。我也想自动刷新我的列表视图。
提前致谢!如果您需要更多代码,请告诉我!
【问题讨论】:
-
请显示完整代码
-
我编辑了我的问题
-
我按照您的要求使用完整代码编辑了我的问题!
标签: android sqlite listview contextmenu