长按某黑名单电话之后,弹出一上下文对话框,进行修改或者删除操作。
首先在res文件下创建menu文件夹,然后创建一个xml文件:contextmenu,用于创建上下文对话框的样式。
android:id="@+id/update_number"
android:title="更改黑名单号码">
android:id="@+id/delete_number"
android:title="删除黑名单号码">
然后给某一个view对象注册上下文菜单:
registerForContextMenu(lv_call_sms_safe);
接着重写上下文对话框的两个方法:onCreateContextMenu和onContextItemSelected
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuinfo) {
super.onCreateContextMenu(menu, v, menuinfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.contextmenu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
// TODO Auto-generated method stub
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
.getMenuInfo();
int id = (int) info.id;
String number = numbers.get(id);
switch (item.getItemId()) {
case R.id.update_number:
updateNumber(number);
break;
case R.id.delete_number:
dao.delete(number);
numbers = dao.getnumbers();
adapter.notifyDataSetChanged();
break;
}
return false;
}最后实现updatenumber方法:
private void updateNumber(final String oldnumber) {
AlertDialog.Builder builder = new Builder(CallSmsActivity.this);
builder.setTitle("更新黑名单号码");
final EditText et = new EditText(CallSmsActivity.this);
et.setInputType(InputType.TYPE_CLASS_PHONE);
builder.setView(et);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String newnumber = et.getText().toString().trim();
if (TextUtils.isEmpty(newnumber)) {
Toast.makeText(getApplicationContext(), "号码不能为空", 1);
return;
} else {
dao.update(oldnumber, newnumber);
numbers = dao.getnumbers();
adapter.notifyDataSetChanged();
}
// TODO Auto-generated method stub
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
// return;
}
});
builder.create().show();
}