Eliminar item de adapter personalizado de acuerdo a los registros de una base de datos sqlite
Publicado por Bladimir (9 intervenciones) el 16/01/2021 18:58:01
Estoy desarrollando una aplicacion para leer menajes de texto. El asunto es que el usuario tiene la posibilidad de ocultar ciertos numeros de telefono. La aplicacion funciona bien a la hora de crear un adapter perzonalizado y mostrar en un listview la relacion de mensajes recibidos y enviados. Lo que quiero es que el usuario al decidir ocultar los mensajes de un remitente ya estos no aparezcan en el listview principal sino en otro donde se mostraran solo los remitentes ocultos. En mi clase principal el listview se llena de acuerdo al siguiente codigo:
La clase adapter que permite crear el adapter es la siguiente:
He pensado dos cosas. Un posibilidad es que el cursor que llena el listview con todos los remitentes no ocultos o visibles pueda ser diseñado de tal forma que excluya los numeros telefonicos ocultos de acuerdo a la tabla donde ellos se guardan, y la otra posibilidad es que el adapter sea depurado de acuerdo a los registros de la tabla donde se guardan los numeros ocultos. Cualquier ayuda sera apreciada. Saludos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
cursor = getContentResolver().query(uri, new String[]{"DISTINCT address","date", "body"}, "address IS NOT NULL) GROUP BY (address", null, "date desc");
int indexDate = cursor.getColumnIndex( SmsReceiver.DATE );
int indexBody = cursor.getColumnIndex( SmsReceiver.BODY );
int indexAddr = cursor.getColumnIndex( SmsReceiver.ADDRESS );
if ( indexDate < 0 || !cursor.moveToFirst() ) return;
do
{
telefono = cursor.getString(indexAddr );
nombreContacto = obtenerNombreContacto(getApplicationContext(), telefono);
if (nombreContacto != null) {
quien = nombreContacto;
}
if (nombreContacto == null) {
quien = telefono;
}
mensajes = new Usuariosms(quien, telefono);
smsList.add(mensajes);
}
while( cursor.moveToNext() );
smsListView = (ListView) findViewById( R.id.SMSList );
adapter = new Usuariossmsadaptador(this, smsList);
smsListView.setAdapter(adapter);
La clase adapter que permite crear el adapter es la siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public class Usuariossmsadaptador extends ArrayAdapter<Usuariosms> {
private LayoutInflater inflater;
private ArrayList<Usuariosms> usuarios;
public Usuariossmsadaptador(Context context, ArrayList<Usuariosms> usuarios) {
super(context, 0, usuarios);
this.usuarios = usuarios;
this.inflater = LayoutInflater.from(context);
}
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
ViewHolderMensajes vista = new ViewHolderMensajes();
convertView = null;
if(convertView == null)
{
v = inflater.inflate(R.layout.lista_sms, parent, false);
/*Se asocian los controles de tipo TextView con sus recursos a nivel de layout.*/
vista.tvNombre = (TextView)v.findViewById(R.id.textView1);
vista.tvTelefono = (TextView)v.findViewById(R.id.textView2);
/*Se asignan a cada componente el índice de la columna a mostrar, a partir de los resultados
de la consulta procesada. En cada ítem del componente de selección ListView se mostrarán
el tipo, el teléfono y la fecha del SMS almacenado.*/
vista.tvNombre.setText(usuarios.get(position).nombre);
vista.tvTelefono.setText( usuarios.get(position).movil);
}
else
{
vista = (ViewHolderMensajes) v.getTag();
}
return v;
}
private class ViewHolderMensajes {
public TextView tvNombre;
public TextView tvTelefono;
}
}
He pensado dos cosas. Un posibilidad es que el cursor que llena el listview con todos los remitentes no ocultos o visibles pueda ser diseñado de tal forma que excluya los numeros telefonicos ocultos de acuerdo a la tabla donde ellos se guardan, y la otra posibilidad es que el adapter sea depurado de acuerdo a los registros de la tabla donde se guardan los numeros ocultos. Cualquier ayuda sera apreciada. Saludos.
Valora esta pregunta


0