从Android的ListView和数据库中删除一个项目
问题描述:
我有一个listview从Arraylist获取数据,这个Arraylist从数据库获取数据。现在我想从列表视图中删除一个项目,并且我想从数据库中删除这个记录。另外,删除选项位于上下文菜单中。我只想知道如何将记录的Id发送到listview项目以及dataModel中的delete方法。我可以通过reslist.getId()从Android的ListView和数据库中删除一个项目
这里是getView和文本菜单的ID:
public View getView(int i, View view, ViewGroup viewGroup) {
View v = view;
if (v == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService
(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.list_layout, null);
}
TextView tv1 = (TextView) v.findViewById(R.id.resName);
TextView tv2 = (TextView) v.findViewById(R.id.resAddress);
ImageView iv = (ImageView) v.findViewById(R.id.resType);
tv1.setText(resList.get(i).getName());
tv2.setText(resList.get(i).getAddress());
iv.setImageResource(R.drawable.tpng);
if(resList.get(i).getType().equals("takeaway")){
iv.setImageResource(R.drawable.tpng);
}else if(resList.get(i).getType().equals("delivery")){
iv.setImageResource(R.drawable.dpng);
}else if(resList.get(i).getType().equals("sitdown")){
iv.setImageResource(R.drawable.spng);
}
registerForContextMenu(v);
return v;
}
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
getMenuInflater().inflate(R.menu.list_menu, menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
public boolean onContextItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.remove:
// I should use delete method here and I just want Item Id
break;
case R.id.item2:
break;
}
return super.onContextItemSelected(item);
}
,这是在数据模型的删除方法
public void deleteRestaurant(int id){
SQLiteDatabase db = getWritableDatabase();
db.execSQL("DELETE FROM " + TABLE_RESTAURANT + "WHERE" + KEY_ID + " = ?", new String[] {String.valueOf(id)});
}
答
从SQLite数据库中删除记录,你可以使用下面的代码:
public void deleteRestaurant(int id) {
System.out.println("the deleted restaurant has the id: " + id);
SQLiteDatabase db = getWritableDatabase();
db.delete(TABLE_RESTAURANT, KEY_ID + " = " + id, null);
}
入住这完全教程约how to use SQLite Database with Multiple Tables in Android
答
你需要获取所选项目的位置。然后从您的阵列列表中删除项目。一旦你删除了该项目,调用notifyDataSetChanged方法,然后它会自动删除该视图。
switch(item.getItemId()){
case R.id.remove:
// I should use delete method here and I just want Item Id
deleteRestaurant(id);
arrayList.remove(position);
notifyDataSetChanged();
break;
case R.id.item2:
break;
+0
我怎样才能得到这个职位? –
看看这个链接http://stackoverflow.com/questions/18632331/using-contextmenu-with-listview-in-android –