繁体   English   中英

无法使用Android中的上下文菜单从列表视图中删除项目

[英]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。

看看是否要使用onCreateContextMenuListView删除项目,您可以这样做:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM