[英]Unable to delete item from List View using context menu in Android
我有自定义列表视图,其中包含员工的姓名和用户名。 我正在尝试删除任何员工。 我已使用上下文菜单删除员工。 但是我没有在列表视图中获得所选项目的ID。 这是我的EmployeeDatabaseHelper类,其中包含deleteEmployee方法
EmployeeDatabaseHelper .java
public void deleteEmployee(String id){
SQLiteDatabase db = dbhelper.getReadableDatabase();
int delId = db.delete(TABLE_NAME_EMPLOYEE, id+" =? ",
new String[] {String.valueOf(id)});
db.close();
}
我在这里使用上下文菜单删除员工
EmployeeFragment.java
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.setHeaderTitle("Select Action");
menu.add(0,v.getId(),0,"Edit");
menu.add(0,v.getId(),0,"Delete");
}
public boolean onContextItemSelected(MenuItem item) {
if (item.getTitle() == "Edit"){
//ToDo edit employee Code
} else if (item.getTitle() == "Delete") {
new AlertDialog.Builder(getActivity())
.setTitle("Delete")
.setMessage("Are you sure you want to delete this Employee ?")
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dbHelper.deleteEmployee(id);
//id is not getting here. (My issue)
}
})
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).show();
} else {
return false;
}
return true;
}
这是我的模特班雇员
Employee.java
public class Employee {
public String username;
public String name;
public String password;
}
如果要删除ListView Item,则应从适配器中删除该ListView所使用的Item。
看看是否要使用onCreateContextMenu
从ListView
删除项目,您可以这样做:
int currentposition;
listview.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
currentposition = info.position;
menu.setHeaderTitle("Choose");
menu.add(0, v.getId(), 0, "Delete ");
}
});
现在使用这个:
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
.getMenuInfo();
if (item.getTitle() == "Delete ") {
mArray.remove(currentposition);
ca.notifyDataSetChanged();
Toast.makeText(this, "Deleted ", Toast.LENGTH_SHORT)
.show();
}
return true;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.