AlphabetIndexer setCursor no actualiza su caché

Estoy tratando de implementar un scroller rápido con AlphabetIndexer, pero cuando el cursor cambia, no está actualizando el chacho de índice. En mi constructor CursorAdapter llamo setCursor(cursor) pero nada cambia, y de acuerdo con la documentación:

Su adaptador es responsable de actualizar el cursor llamando a setCursor (Cursor) si el cursor cambia. Método getPositionForSection (int) hace la búsqueda binaria para el índice inicial de una sección dada (alfabeto).

Pero no pasa nada. Estoy utilizando esto para un filtro de búsqueda, por lo que cuando busco contactos, actualiza la lista con los contactos, por lo que AlphabetIndexer debe trabajar para actualizar el índice de los nuevos elementos de la lista.

Ejemplo: Mi lista completa comienza con contactos que empiezan con 'A' y terminan con contactos que empiezan con 'E'. Así que el AlphabetIndexer tendrá estos índices en su caché.

Pero, vamos a tratar de buscar contactos con 'C', y digamos que tengo 250 contactos que comienza con 'C'. Por lo tanto, tengo que avanzar rápidamente a través de estos contactos, y el índice 'C' debe mostrar, pero en lugar de sólo 'C' que muestra todos los índices, que se mostraron cuando tenía toda la lista.

Aquí está mi constructor CursorAdapter donde llamo setCursor (cursor) para cada letra que escribo:

 public MyCursorAdapter(Context context, Cursor cursor, ArrayList<Integer> ids) { super(context, cursor); try { mAlphaIndexer = new AlphabetIndexer(cursor, cursor.getColumnIndexOrThrow("Name")," ABCDEFGHIJKLMNOPQRSTUVWXYZ"); notifyDataSetChanged(); mAlphaIndexer.setCursor(cursor); this.mSelectedContacts = ids; Log.e("MyCursorAdapter", "construtor: "); } catch(Exception ex) { Log.e("MyCursorAdapter", "Error: " + ex); } finally { mAlphaIndexer.setCursor(cursor); } } 

2 Solutions collect form web for “AlphabetIndexer setCursor no actualiza su caché”

He resuelto esto llamando esto en secuencia después de que fijé el adaptador:

 listView.setFastScrollEnabled(false); listView.setFastScrollEnabled(true); 

Eso funcionó para mí.

Llame a setContentView(R.layout.whatever) y vuelva a llenar el ListView con su nuevo adaptador / nuevos elementos de datos. Esto volverá a dibujar el ListView con sus nuevos elementos y el FastScroll Overlay aparecerá en el lugar correcto.

  • ListView OnItemClickListener con una nueva actividad
  • Cómo funciona el mecanismo de reciclaje de ListView
  • Android: HorizontalScrollView en una fila ListView Elemento, problema de enfoque
  • Cómo crear android listview como android google cromo pestaña
  • Android expandiblelistview no puede mostrar el último grupo cuando se ha expandido
  • Acceder a objetos personalizados en una vista de lista
  • No se puede actualizar / actualizar listview en un fragmento de otro fragmento en ViewPager
  • Una fila a fill_parent ListView height
  • Cómo obtener elementos seleccionados de la vista de lista de selección múltiple
  • SearchView en ActionBar - problemas con el botón * Up *
  • Cómo resaltar la fila en ListView en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.