ListView con alfabetos a la derecha, como el iPhone. ¿Es posible?
Me gustaría saber si un ListView en Android tiene una opción para colocar alfabetos a la derecha como el paradigma de iPhone ListView, como a continuación
- Cambiar el diseño del elemento de lista seleccionado en Android
- Colocar ViewPager como una fila en ListView
- ListView onScroll añadir más elementos
- Obtener el elemento seleccionado en un ListItem ContextMenu
- ¿Cómo conseguir el foco del niño de ListView?
Si es así, ¿alguien puede proporcionarme códigos de muestra?
No estoy buscando el que tiene una superposición de alfabeto de ApisDemo pero uno exacto como el paradigma del iPhone. ¿Es posible?
- Ocultar fila de ListView sin ocupar espacio
- Android ListView con 2 TextViews por artículo
- Encontrar la ubicación de píxeles del elemento ListView parece devolver un valor incorrecto
- Arrastrar y soltar listitem de un listview a otro listo de listview
- Android - ListView filtrar el conteo
- No se puede establecer el margen del elemento en ListView mediante adaptador personalizado
- Fragmento tiene el fondo blanco por defecto en replace () en lugar de uno transparente
- ¿Cómo obtener la vista de un elemento en listview en android?
He implementado somthing similar un tiempo atrás, así que he modificado mi actividad y puede echar un vistazo a continuación, lo siento no es muy bien comentado – espero que ayude!
public class AZIndexer extends Activity { ListView myListView; ArrayList<String> elements; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // elements String s = "MNBVCXZLKJHGFDSAQWERTYUIOP"; Random r = new Random(); elements = new ArrayList<String>(); for (int i = 0; i < 300; i++) { elements.add(s.substring(r.nextInt(s.length()))); } Collections.sort(elements); // Must be sorted! // listview myListView = (ListView) findViewById(R.id.myListView); myListView.setFastScrollEnabled(true); MyAZAdapter<String> adapter = new MyAZAdapter<String>( getApplicationContext(), android.R.layout.simple_list_item_1, elements); myListView.setAdapter(adapter); } class MyAZAdapter<T> extends ArrayAdapter<T> implements SectionIndexer { ArrayList<String> myElements; HashMap<String, Integer> azIndexer; String[] sections; public MyAZAdapter(Context context, int textViewResourceId, List<T> objects) { super(context, textViewResourceId, objects); myElements = (ArrayList<String>) objects; azIndexer = new HashMap<String, Integer>(); //stores the positions for the start of each letter int size = elements.size(); for (int i = size - 1; i >= 0; i--) { String element = elements.get(i); //We store the first letter of the word, and its index. azIndexer.put(element.substring(0, 1), i); } Set<String> keys = azIndexer.keySet(); // set of letters Iterator<String> it = keys.iterator(); ArrayList<String> keyList = new ArrayList<String>(); while (it.hasNext()) { String key = it.next(); keyList.add(key); } Collections.sort(keyList);//sort the keylist sections = new String[keyList.size()]; // simple conversion to array keyList.toArray(sections); } public int getPositionForSection(int section) { String letter = sections[section]; return azIndexer.get(letter); } public int getSectionForPosition(int position) { Log.v("getSectionForPosition", "called"); return 0; } public Object[] getSections() { return sections; // to string will be called to display the letter } } }
Con xml como:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:id="@+id/myListView" android:layout_width="fill_parent" android:layout_height="fill_parent"> </ListView> </LinearLayout>
Captura de pantalla:
Puede consultar este proyecto https://github.com/woozzu/IndexableListView . Aquí está la captura de pantalla
Es posible que si está dispuesto a escribir el código, pero el desplazador rápido, como se muestra en la aplicación AOSP Contactos, es la forma que ofrece la plataforma de presentar una lista de índice de sección.