// Updating single contact
 public int updateContact(Contact contact) {
   SQLiteDatabase db = this.getWritableDatabase();
   ContentValues values = new ContentValues();
   values.put(KEY_NAME, contact.getName());
   values.put(KEY_PH_NO, contact.getPhoneNumber());
   // updating row
   return db.update(
       TABLE_CONTACTS, values, KEY_ID + " = ?", new String[] {String.valueOf(contact.getID())});
 }
  // Adding new contact
  void addContact(Contact contact) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_NAME, contact.getName()); // Contact Name
    values.put(KEY_PH_NO, contact.getPhoneNumber()); // Contact Phone
    // Inserting Row
    db.insert(TABLE_CONTACTS, null, values);
    db.close(); // Closing database connection
  }
 @Override
 public String getDialString() {
   String phone = "callto://" + contact.getPhoneNumber().replaceAll("[()-]", "");
   return phone;
 }
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.add_update_screen);

    // set screen
    Set_Add_Update_Screen();

    // set visibility of view as per calling activity
    String called_from = getIntent().getStringExtra("called");

    if (called_from.equalsIgnoreCase("add")) {
      add_view.setVisibility(View.VISIBLE);
      update_view.setVisibility(View.GONE);
    } else {

      update_view.setVisibility(View.VISIBLE);
      add_view.setVisibility(View.GONE);
      USER_ID = Integer.parseInt(getIntent().getStringExtra("USER_ID"));

      Contact c = dbHandler.Get_Contact(USER_ID);

      add_name.setText(c.getName());
      add_mobile.setText(c.getPhoneNumber());
      add_email.setText(c.getEmail());
      // dbHandler.close();
    }
    add_mobile.addTextChangedListener(
        new TextWatcher() {

          @Override
          public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub

          }

          @Override
          public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            // TODO Auto-generated method stub

          }

          @Override
          public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
            // min lenth 10 and max lenth 12 (2 extra for - as per phone
            // matcher format)
            Is_Valid_Sign_Number_Validation(12, 12, add_mobile);
          }
        });
    add_mobile.addTextChangedListener(new PhoneNumberFormattingTextWatcher());

    add_email.addTextChangedListener(
        new TextWatcher() {

          @Override
          public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub

          }

          @Override
          public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            // TODO Auto-generated method stub

          }

          @Override
          public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
            Is_Valid_Email(add_email);
          }
        });

    add_name.addTextChangedListener(
        new TextWatcher() {

          @Override
          public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub

          }

          @Override
          public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            // TODO Auto-generated method stub

          }

          @Override
          public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
            Is_Valid_Person_Name(add_name);
          }
        });

    add_save_btn.setOnClickListener(
        new View.OnClickListener() {

          @Override
          public void onClick(View v) {
            // TODO Auto-generated method stub
            // check the value state is null or not
            if (valid_name != null
                && valid_mob_number != null
                && valid_email != null
                && valid_name.length() != 0
                && valid_mob_number.length() != 0
                && valid_email.length() != 0) {

              dbHandler.Add_Contact(new Contact(valid_name, valid_mob_number, valid_email));
              Toast_msg = "Data inserted successfully";
              Show_Toast(Toast_msg);
              Reset_Text();
            }
          }
        });

    update_btn.setOnClickListener(
        new View.OnClickListener() {

          @Override
          public void onClick(View v) {
            // TODO Auto-generated method stub

            valid_name = add_name.getText().toString();
            valid_mob_number = add_mobile.getText().toString();
            valid_email = add_email.getText().toString();

            // check the value state is null or not
            if (valid_name != null
                && valid_mob_number != null
                && valid_email != null
                && valid_name.length() != 0
                && valid_mob_number.length() != 0
                && valid_email.length() != 0) {

              dbHandler.Update_Contact(
                  new Contact(USER_ID, valid_name, valid_mob_number, valid_email));
              dbHandler.close();
              Toast_msg = "Data Update successfully";
              Show_Toast(Toast_msg);
              Reset_Text();
            } else {
              Toast_msg = "Sorry Some Fields are missing.\nPlease Fill up all.";
              Show_Toast(Toast_msg);
            }
          }
        });
    update_view_all.setOnClickListener(
        new View.OnClickListener() {

          @Override
          public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent view_user = new Intent(Add_Update_User.this, Main_Screen.class);
            view_user.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(view_user);
            finish();
          }
        });

    add_view_all.setOnClickListener(
        new View.OnClickListener() {

          @Override
          public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent view_user = new Intent(Add_Update_User.this, Main_Screen.class);
            view_user.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(view_user);
            finish();
          }
        });
  }