Mi propósito es obtener algo como esto :

Cómo crear una alfabético de barra de desplazamiento de la visualización de toda la carta en android?

Pero el sólo ejemplos de lo que puede encontrar son listas como que :

android – listview fastscroll con el alfabeto como en los contactos de iPhone de la actividad

Obviamente, no quiero una lista de los contactos que muestra las letras cuando fastscroll. Yo sé cómo hacer esto.

Cualquier puntero sería bienvenido.
(He intentado este, pero sin éxito)

A continuación, la solución completa como sugieren por FunkTheMonk (muchas gracias) :

Definir el listview como de costumbre. Definir un RelativeLayout que contiene el ListView y a la derecha, un LinearLayout con todas las letras. Para una mejor solución, la lista de cartas podrían ser generados dinámicamente para mostrar sólo las letras que aparecen en la lista. Luego en el método onClick, agregar el comportamiento para desplazarse por la lista :

xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginRight="28dip" />
<LinearLayout android:orientation="vertical"
android:layout_width="28dip" android:layout_height="wrap_content"
android:layout_alignParentRight="true" android:background="@android:color/transparent" >
<TextView android:id="@+id/A" android:text="A" android:tag="A"
style="@style/alphabetTextView"/>
<TextView android:id="@+id/B" android:text="B" android:tag="B"
style="@style/alphabetTextView" />
<TextView android:id="@+id/C" android:text="C" android:tag="C"
style="@style/alphabetTextView" />
<TextView android:id="@+id/D" android:text="D" android:tag="D"
style="@style/alphabetTextView" />
<TextView android:id="@+id/E" android:text="E" android:tag="E"
style="@style/alphabetTextView" />
<TextView android:id="@+id/F" android:text="F" android:tag="F"
style="@style/alphabetTextView" />
<TextView android:id="@+id/G" android:text="G" android:tag="G"
style="@style/alphabetTextView" />
<TextView android:id="@+id/H" android:text="H" android:tag="H"
style="@style/alphabetTextView" />
<TextView android:id="@+id/I" android:text="I" android:tag="I"
style="@style/alphabetTextView" />
<TextView android:id="@+id/J" android:text="J" android:tag="J"
style="@style/alphabetTextView" />
<TextView android:id="@+id/K" android:text="K" android:tag="K"
style="@style/alphabetTextView" />
<TextView android:id="@+id/L" android:text="L" android:tag="L"
style="@style/alphabetTextView" />
<TextView android:id="@+id/M" android:text="M" android:tag="M"
style="@style/alphabetTextView" />
<TextView android:id="@+id/N" android:text="N" android:tag="N"
style="@style/alphabetTextView" />
<TextView android:id="@+id/O" android:text="O" android:tag="O"
style="@style/alphabetTextView" />
<TextView android:id="@+id/P" android:text="P" android:tag="P"
style="@style/alphabetTextView" />
<TextView android:id="@+id/Q" android:text="Q" android:tag="Q"
style="@style/alphabetTextView" />
<TextView android:id="@+id/R" android:text="R" android:tag="R"
style="@style/alphabetTextView" />
<TextView android:id="@+id/S" android:text="S" android:tag="S"
style="@style/alphabetTextView" />
<TextView android:id="@+id/T" android:text="T" android:tag="T"
style="@style/alphabetTextView" />
<TextView android:id="@+id/U" android:text="U" android:tag="U"
style="@style/alphabetTextView" />
<TextView android:id="@+id/V" android:text="V" android:tag="V"
style="@style/alphabetTextView" />
<TextView android:id="@+id/W" android:text="W" android:tag="W"
style="@style/alphabetTextView" />
<TextView android:id="@+id/X" android:text="X" android:tag="X"
style="@style/alphabetTextView" />
<TextView android:id="@+id/Y" android:text="Y" android:tag="Y"
style="@style/alphabetTextView" />
<TextView android:id="@+id/Z" android:text="Z" android:tag="Z"
style="@style/alphabetTextView" />
</LinearLayout>
</RelativeLayout>

Java

@Override
public void onClick(View v) {
String firstLetter = (String) v.getTag();
int index = 0;
if (stringList != null) {
for (String string : stringList) {
if (string.startsWith(firstLetter)) {
index = stringList.indexOf(string);
break;
}
}
}
lv.setSelectionFromTop(index, 0);
}
  • comprobar mi respuesta aquí stackoverflow.com/questions/7994959/…
  • Hola, gracias por la respuesta, pero esto muestra cómo hacer cabeceras, que no es lo que necesito… Comprobar la imagen. Lo que yo quiero es una lista de las letras a la derecha, que cuando hago clic en uno, la lista de desplazamiento en el que el primer elemento que empiezan con esta letra.
  • No estoy recibiendo el evento onClick, puede usted por favor me explique cómo funciona?
  • tiene mirada en el tutorial stackoverflow.com/a/39295074/5305430
InformationsquelleAutor Sephy | 2011-11-19

2 Comentarios

  1. 43

    Esta es una característica de iPhone, Android utiliza desplazamiento rápido. Me gustaría recomendar que se utilice la plataforma alternativa en lugar de tratar de hacer cumplir la funcionalidad común.

    Si usted debe, usted tendrá que aplicar esto a ti mismo. Ponga su vista de lista en un RelativeLayout y poner la a a la Z TextViews en vertical LinearLayout que se establece en layout_alignParentRight="true". Establecer el TextView de la etiqueta de la a a la Z lógicamente y establecer onClick="quickScroll" en todos ellos.

    Poner en práctica en su Actividad:

    public void quickScroll(View v) {
    String alphabet = (String)v.getTag();
    //find the index of the separator row view
    list.setSelectionFromTop(index, 0);
    }

    Este se desplazará a la letra seleccionada onClick, pero yo creo que se puede desplazar el dedo sobre el alfabeto en el iPhone y voy a actualizar la lista? Usted tendrá que implementar un onTouchListener en lugar de onClickListener para que.

    • Sí, sé que es un iphone, pero no para mí. Así que estoy haciendo lo que estoy pidiendo. aunque estoy de acuerdo con usted, cumpliendo con android de la manera en que sería mejor. Cualquier puntero sobre cómo obtener el separador ?
    • Excelente, funciona a la perfección ! muchas gracias !
    • Gracias. Funciona bien. También añadir android:clickable=»true» para TextViews.
    • Gracias .. nyc explicación 🙂
    • ¿Qué pasa con otros idiomas?
  2. 26

    Puede intentar usar IndexScroller que sólo visible en contacto y auto invisible cuando no hay contacto.
    Aquí está la captura de pantalla

    Cómo crear una alfabético de barra de desplazamiento de la visualización de toda la carta en android?

    • Esto es exactamente lo que yo necesitaba! Gracias.
    • es’ s no funciona para mí
    • Crear nueva pregunta y elaborar lo que se intenta y ¿cómo es que no funcione 🙂
    • ¿cómo implementar esto en el código, nunca me los alfabetos en el lado derecho. Amablemente ayuda
    • He tratado de que el github.com/woozzu/IndexableListView menciona en responder y bastante aplica a todas las clases para implementar esto, pero la lista de show y se bloquea si yo fuera a desplazarse por la lista
    • Usted puede crear una pregunta y agregar la información relacionada. Me puede ayudar a usted sin su código y registro de error.
    • Cómo conectar este a mi listview?
    • Por favor revise esta muestra github.com/woozzu/IndexableListView/blob/master/src/com/woozzu/…

Dejar respuesta

Please enter your comment!
Please enter your name here