Android - Lista contactos

 
Vista:
Imágen de perfil de Violeta
Val: 36
Ha disminuido 1 puesto en Android (en relación al último mes)
Gráfica de Android

Lista contactos

Publicado por Violeta (22 intervenciones) el 25/03/2020 11:57:07
Buenas.

Tengo que crear una agenda de contacto en android. La duda es que tengo que poder seleccionar los contactos de una lista (LIstVew) y que se abra toda la información en otra activity.

¿Alguna idea de la mejor manera de hacerlo? Soy bastante nueva en esto, lo de pasar los datos a otra activity más o menos sé hacerlo, pero no lo de seleccionar el contacto.

Gracias por adelantado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 4
Ha aumentado su posición en 5 puestos en Android (en relación al último mes)
Gráfica de Android

Lista contactos

Publicado por sergia (2 intervenciones) el 03/04/2020 16:21:47
Hola si utilizas tu lista de contactos en google cada app que abras y este determinada con google se podra sincronizar. Si quieres trabajar en una plataforma yasea un excel o word lo puedes hacer desde el drive.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Violeta
Val: 36
Ha disminuido 1 puesto en Android (en relación al último mes)
Gráfica de Android

Lista contactos

Publicado por Violeta (22 intervenciones) el 26/04/2020 11:33:05
Ok muchas gracias, me ha solucionado la duda.
Ahora tengo otro problema que me está volviendo loca. Resulta que no me carga la lista de contactos porque me salta un nullpointerexception, la cuestión es que hago un getcount() y me sale positivo: Estoy usando SQLite.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Cursor c = db.rawQuery("SELECT * FROM contactos", null);
int txtNum = c.getCount();
if (txtNum != 0) {
    txtRes.setText("Contactos encontrados: " +txtNum);
    if (c.moveToFirst()) {
 
        do {
 
            miContact = new Contactos(
                    c.getString(1),
                    c.getString(2)
            );
 
            contactos.add(miContact);
 
        } while (c.moveToNext());
 
    }
 
    ArrayAdapter<Contactos> adapter = new ArrayAdapter<Contactos>(getApplicationContext(), android.R.layout.simple_list_item_1, contactos);
    txtList.setAdapter(adapter);
} else {
    txtRes.setText("Resultado "+c);
}

Debería ser mayor que 6???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Violeta
Val: 36
Ha disminuido 1 puesto en Android (en relación al último mes)
Gráfica de Android

Lista contactos

Publicado por Violeta (22 intervenciones) el 26/04/2020 12:01:01
Solucionado, tenía mal inicializado el ArrayList.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Violeta
Val: 36
Ha disminuido 1 puesto en Android (en relación al último mes)
Gráfica de Android

Lista contactos

Publicado por Violeta (22 intervenciones) el 26/04/2020 12:46:37
Esto es problema tras problema,.
No sé si el código anterior está bien pero me lo saca así. Está claro que no estoy recorriendo bien el cursor, pero en todas las webs que veo no encuentro ninguna solución.
Alguna idea??

errlista

He probado a cambiar el método rawquery() por query(), pero me sale igual...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Lista contactos

Publicado por Alberto (2 intervenciones) el 26/04/2020 14:57:41
No utilices el constructor de miContact. Asigna los valores del cursor a través de los setter.
Prueba así.

Es decir,
1
2
3
miContact= new Contact;    //Create un constructor vacio en tu entidad miContact
miContact.setCampo1= c.getString(1);
miContact.setCampo2= c.getString(2);

Esto es lo que se me ocurre ahora mismo. Puede que el fallo lo tengas en el constructor de la entidad miContact.
Espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Violeta
Val: 36
Ha disminuido 1 puesto en Android (en relación al último mes)
Gráfica de Android

Lista contactos

Publicado por Violeta (22 intervenciones) el 26/04/2020 16:58:30
Acabo de intentar con
1
2
3
4
5
miContact = new Contactos();
miContact.setNombre(c.getString(1));
miContact.setTelefono(c.getString(2));
 
contactos.add(miContact);
pero nada, mismo resultado.
Encima tengo que hacer un clickLIstener para que al pinchar en un item de la lista se pasen los datos de ese item a otra activity... Y por supuesto me sale menos aún.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Lista contactos

Publicado por Alberto (7 intervenciones) el 26/04/2020 18:34:46
Desde mi punto de vista, eso está bien. Más vale entonces que mires como guardas los datos en la tabla, puede que los estés guardando mal.
Para el onclick, solo tienes que añadir en el adaptador una línea un nuevo procedimiento.
Por ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@NonNull
@Override
public ViewHolderDatos onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    //onCreateViewHolder enlaza este adaptador con el archivo item_linea.xml
    View view= LayoutInflater.from(parent.getContext())
            .inflate(R.layout.item_linea,null,false);
 
    //Hacemos que se escuche el Onclick
    view.setOnClickListener(this);
 
    return new ViewHolderDatos(view);
}
public void setOnClickListener(View.OnClickListener listener){
 
    this.listener=listener;
}

Después, en mi onCreate hago la escucha de ese onClick:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
adapter.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
 
        miContact=new Contact();
        miContact.setNombre(contactos.get(txtList.getChildAdapterPosition(v)).getNombre());
        miContact.setTelefono(contactos.get(txtList.getChildAdapterPosition(v)).getTelefono());
 
 
         //Me voy a otra activity, supongamos que estoy en la actividad MainActivity_Principal y voy a MainActivity_DatosContacto
         Intent intent=new Intent(MainActivity_Principal.this,MainActivity_DatosContacto.class);
         intent.putExtra("Contacto",miContact.getNombre); //Esto es por si quieres enviar por ejemplo el nombre a la nueva actividad
         startActivity(intent);
          finish();
    }
});

ok?
Ya me dices, pero lo de los datos de la tabla es muy extraño, repito, mira como grabas los datos, ahí puede que esté el fallo, ya que ese código que has mandado está correcto desde mi punto de vista
Espero te sirva esto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Violeta
Val: 36
Ha disminuido 1 puesto en Android (en relación al último mes)
Gráfica de Android

Lista contactos

Publicado por Violeta (22 intervenciones) el 26/04/2020 18:39:49
Ok, lo de pasar los datos ya lo conseguí solucionar.
Vale miraré como inserto, quizás hay esté el problema.

Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Violeta
Val: 36
Ha disminuido 1 puesto en Android (en relación al último mes)
Gráfica de Android

Lista contactos

Publicado por Violeta (22 intervenciones) el 26/04/2020 20:13:41
Pues por desgracia los estoy insertando bien, porque en otra activity hago otra consulta y me lo saca todo genial.
Pero no lo puedo hacer igual porque no es una lista dinámica, por lo tanto el planteamiento es diferente, es sólo rellenar setTText con los datos de un sólo registro, que es mucho más fácil.

Seguiré buscando...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Violeta
Val: 36
Ha disminuido 1 puesto en Android (en relación al último mes)
Gráfica de Android

Lista contactos

Publicado por Violeta (22 intervenciones) el 27/04/2020 10:55:01
El problema estaba al hacer el array con la clase Contactos, no lo hace bien, al cambiarlo por un arrayList normal (String) sí que sale, intentaré tirar por ahí, aunque para coger luego el valor para pasarlo a otra activuty va a ser más dificil.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Lista contactos

Publicado por Alberto (7 intervenciones) el 27/04/2020 18:04:54
Como te comente anteriormente, este código para cuando pulses en el recycler:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
adapter.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
 
        miContact=new Contact();
        miContact.setNombre(contactos.get(txtList.getChildAdapterPosition(v)).getNombre());
        miContact.setTelefono(contactos.get(txtList.getChildAdapterPosition(v)).getTelefono());
 
 
         //Me voy a otra activity, supongamos que estoy en la actividad MainActivity_Principal y voy a MainActivity_DatosContacto
         Intent intent=new Intent(MainActivity_Principal.this,MainActivity_DatosContacto.class);
         intent.putExtra("Contacto",miContact.getNombre); //Esto es por si quieres enviar por ejemplo el nombre a la nueva actividad
         startActivity(intent);
          finish();
    }
});

Intentent.putExtra es para enviar a la nueva activity los datos que te hagan falta.
Para recibir esos datos en la nueva activity: (yo lo hago a través de una función)

1
2
3
4
5
6
7
8
private String RecibirDatos(){
        Bundle extras=this.getIntent().getExtras();
        String dato="";
        if(extras!=null){
            dato=extras.getString("Contacto");
        }
        return dato;
    }

Esta función, como es logico se debe colocar en el onCreate, así pues, en el onCreate iría:

1
2
3
4
String nombreContacto=RecibirDatos();
if (nombreContacto.equals("Jose")){
  //Hago lo que tenga que hacer
}

ok?
Espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Lista contactos

Publicado por Alberto (2 intervenciones) el 26/04/2020 12:05:20
Pues si, hay que mirar bien las declaraciones.
Me alegro que lo hayas solucionado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar