Colección de citas famosas - Slogan de motivación - Android4.4 no puede usar AsyncQueryHandler SMS para leer ListView.

Android4.4 no puede usar AsyncQueryHandler SMS para leer ListView.

La clase pública TestAsyncQueryHandler extiende la actividad {

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);

nombre de cadena = cursor . getstring(1);

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();

}

}

}

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

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. ....