我有一個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)});
}
看看這個鏈接http://stackoverflow.com/questions/18632331/using-contextmenu-with-listview-in-android –