es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo identificar un contacto al presionarlo en Android Studio?

Quiero eliminar un contacto en particular, pero no encontrándolo por su ID, nombre, etc., simplemente pulsándolo y preguntando si estoy seguro de que quiero hacerlo.

He hecho algunas preguntas sobre este tema, pero la forma real en que quiero determinar el contacto que quiero eliminar es pulsándolo.

Esta es la clase que utilicé, que he actualizado para que funcione en mi Actividad:

private void deleteContacts() {
    ContentResolver contentResolver = getContentResolver();
    Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
    while (cursor.moveToNext()) {
        String lookupKey = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.LOOKUP_KEY));
        Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey);
        contentResolver.delete(uri, null, null);
    }
}

Aparentemente esto elimina todos los contactos (¿creo?).

¿Cómo hago para que en lugar de eliminar TODOS los contactos, solo elimine uno que yo quiera?

Proceso de cómo quiero que funcione:

  1. Pulsando este botón:

Eliminar Contacto

  1. Los contactos o tal vez solo el botón cambian de color, para que el usuario sepa cuándo está activada la función de eliminación (intentaré hacer esto por mí mismo).

  2. Haciendo clic en un contacto.

  3. Aparece una caja de “¿Está seguro de que desea eliminar este contacto?” (No es importante en este momento).

  4. Después de estar seguro, se elimina el contacto.

Espero haber sido lo suficientemente preciso para que las personas comprendan mi pregunta.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para eliminar un solo contacto al hacer clic en él, debes implementar un OnClickListener para la vista del contacto. Aquí están los pasos a seguir:

    1. Encuentra la vista que representa el contacto que quieres eliminar usando el método findViewById() y establece un OnClickListener en ella.
    View contactView = findViewById(R.id.contact_view);
    contactView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Elimina el contacto aquí
        }
    });
    
    1. Dentro del método onClick(), puedes usar el método getContentResolver() para obtener una instancia de la clase ContentResolver, y luego usar el método delete() para eliminar el contacto.
    ContentResolver contentResolver = getContentResolver();
    Uri contactUri = // Obtén la URI de contacto de la vista clicleada
    contentResolver.delete(contactUri, null, null);
    
    1. Puedes mostrar un cuadro de diálogo de confirmación usando un DialogFragment. Por ejemplo:
    public class ConfirmationFragment extends DialogFragment {
    
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
            builder.setMessage("¿Seguro que quieres eliminar este contacto?")
                    .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // Elimina el contacto aquí
                        }
                    })
                    .setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // No hacer nada
                        }
                    });
            return builder.create();
        }
    
    1. Para mostrar el cuadro de diálogo de confirmación cuando el usuario hace clic en el contacto, llama al método ConfirmationFragment.show() desde el OnClickListener.
    ContactView contactView = findViewById(R.id.contact_view);
    contactView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ConfirmationFragment fragment = new ConfirmationFragment();
            fragment.show(getSupportFragmentManager(), "confirmación");
        }
    });
    

    Ten en cuenta que deberás reemplazar R.id.contact_view con el ID de la vista que representa el contacto en tu diseño.

Comments are closed.