Android4.4 no puede usar AsyncQueryHandler SMS para leer ListView.
cadena final estática privada NOMBRE = "NOMBRE", NÚMERO = "número", SORT_KEY = "sort_key
Lista de distribución personal<Content Values>listData
Private AsyncQueryHandler asyncQuery
Lista de personas ListView privada;
Adaptador de base privada;
@Override
anulación pública al crear (paquete guardado estado de instancia){
super . oncreate(savedInstanceState);
setContentView(r . diseño . principal);
lista de personas =(ListView)findViewById(r . id . list _ view);
async query = new MyAsyncQueryHandler(getContentResolver());
//Leer información de contacto de forma asincrónica.
asyncQueryContact();
}
Private void asyncQueryContact() {
//TODO código auxiliar de método generado automáticamente
uri uri = uri . parse(" contenido://com . Android . contactos/datos/teléfonos ");
Cadena[] proyección = { "_id ", " display_name ", " data1 "," sort_key"};
asyncQuery.startQuery(0, null, uri, proyección, null, null, "sort_key COLLATE LOCALIZED ASC ");
}
La clase privada MyAsyncQueryHandler extiende AsyncQueryHandler {
Público MyAsyncQueryHandler(resolución de contenido Cr){
Super(Cr);
}
@override
protected void onQueryComplete(etiqueta int, cookie de objeto, cursor cursor) {
if (cursor ! = null & amp& ampcursor . get count()> 0) {
listData = new ArrayList & ltcontent value& gt();
//cursor . mover a first();
for(int I = 0;i<cursor. . obtener count();i++) {
valores de contenido cv = nuevos valores de contenido();
cursor .mover a la posición(I);
número de cadena = cursor .
clave de clasificación de cadena = cursor .
if(número . comienza con("+86 "){
cv.put(nombre, nombre);
//Proceso (+86)
cv.put(NUMBER, NUMBER. substring(3));
cv.put(SORT_KEY, SORT KEY);
} En caso contrario {
cv.put(nombre, título);
cv.put(número, número);
cv.put(SORT_KEY, SORT KEY);
}
lista de datos . add(cv);
}
if(lista de datos . tamaño() & gt; 0) {
setAdapter(lista de datos);
}
Cursor. close();
} p>
}
}
SetAdapter vacío privado(Lista & lt; valor de contenido & gt lista de datos) {
adapter = new ListAdapter(this, lista de datos);
personList.setAdapter(adapter);
}
Clase privada ListAdapter extiende BaseAdapter {
Máquina inflable de diseño privado;
Distribución personal List<ContentValue>List;
ListAdapter público (contexto de contexto, List<ContentValue>List){
this . inflador = diseñoinflador de (contexto);
this.list = lista
}
@override
public int getCount () {
Devolver tamaño de lista();
}
@Override
Objeto público getItem(int posición) {
Lista de retorno get(posición);
}
@Override
public long getItemId(int position){
Devolver posición;
}
@override p>
Vista pública getView(int position, View convertView, ViewGroup parent) {
Soporte de ViewHolder;
if (convertView == null) {
convertir vista = inflar . inflar(r . diseño . list_item, null);
titular = nueva vista titular();
titular nombre =(TextView)convertir vista. (r . id . nombre);
titular número =(TextView )convertir vista . findviewbyid(r . id . número);
convertir vista . /p>
}de lo contrario{
titular =(titular de vista)convertir vista .
}
valores de contenido cv =. lista . get(posición);
titular . settext(cv . getasstring (NOMBRE));
titular . /p>
Devolver convertView
}
Visor de clase privada {
Nombre de TextView
Número de TextView
}
}
}
No puedo explicar una o dos frases con claridad.
¿Por qué no vienes a nuestro grupo a hablar? ¿Alguien aquí conoce esta funcionalidad?
Que te expliquen cómo ver mis nuevos medios. ....