Android ListView, explica lo siguiente,
- Cómo crear un ListView que muestra una lista de elementos (en nuestro ejemplo, mostramos una lista de frutas).
- Cómo habilitar el desplazamiento rápido en ListView
- Cómo personalizar los atributos de estilo de desplazamiento rápido como, Desplazamiento rápido del pulgar dibujable Color de texto de desplazamiento rápido Pista de desplazamiento rápido dibujable Fondo de vista previa de desplazamiento rápido
Cree un nuevo proyecto de Android y asígnele el nombre ” AndroidFastScrollDemo “.
Recursos
- ¿Cómo puedo rootear mi dispositivo Android?
- ¿Cuál es el mejor sistema operativo de Windows phone y Android en términos de rendimiento, pero no el recuento de aplicaciones?
- ¿Por qué el iPhone es más seguro que Android?
- ¿Cómo perderá el iPhone la batalla contra Android?
- ¿Por qué Microsoft ha abandonado la estrategia de "fuego y movimiento" para Windows Phone 7?
colores.xml
Cree un nuevo archivo res / values / colors.xml y copie y pegue el siguiente contenido.
# DA4A38
strings.xml
Abra res / values / strings.xml y edite para tener el contenido como se muestra a continuación.
AndroidFastScrollDemo
Configuración
¡Hola mundo!
Manzanas
Albaricoques
Aguacate
Annona
Plátano
Arándano
Blackberry
Chirimoya
Clementina
Cantalope
Coco
Grosella
Cereza
Cherimoya
Fecha
Damson
Durian
Saúco
Fig
Feijoa
Pomelo
Uva
Grosella espinosa
Guayaba
Melón Honeydew
Huckleberry
Jackfruit
Baya de enebro
Jambul
Azufaifa
Kiwi
Kumquat
Limones
Limas
Lychee
Mango
mandarín
Mangostina
Nectaraine
Naranja
Oliva
Ciruelas pasas
Peras
Ciruela
Piña
Melocotón
Papaya
Fruta de la pasión
Granada
Pomelo
Frambuesas
Melón de roca
Rambután
Fresas
Cariño
Salmonberry
Satsuma
Mandarinas
Tomate
Ugli
Sandía
Woodapple
Archivos de diseño
activity_main.xml
Este archivo de diseño XML ( activity_main.xml ) se usa para definir ListView
Abra el archivo activity_main.xml en res / layout y copie el siguiente contenido.
<RelativeLayout xmlns: android = "http://schemas.android.com/apk/r…"
xmlns: tools = “http://schemas.android.com/tools”
android: layout_width = “match_parent”
android: layout_height = “match_parent”
android: padding = “5dp”
herramientas: contexto = “. MainActivity”>
<ListView
android: id = “@ android: id / list”
android: layout_width = “fill_parent”
android: layout_height = “fill_parent”
android: scrollbarStyle = “outsideOverlay” />
list_item.xml
Este archivo de diseño XML ( list_item.xml ) se usa para mostrar un elemento particular de ListView. Contiene un único TextView.
Cree un nuevo archivo list_item.xml en res / layout y copie el siguiente contenido.
<TextView xmlns: android = "http://schemas.android.com/apk/r…"
android: id = “@ + id / txt_title”
android: layout_width = “fill_parent”
android: layout_height = “fill_parent”
android: paddingBottom = “10dp”
android: paddingLeft = “15dp”
android: paddingTop = “10dp” />
styles.xml
Abra res / values / styles.xml y edite para tener el contenido como se muestra a continuación. Aquí, se definen los atributos de estilo de desplazamiento rápido.
@ drawable / fastscroll_thumb_holo
atThumb
@ color / apptheme_color
@ drawable / fastscroll_thumb_pressed_holo
@ drawable / bg_default_focused_holo_light
fastscroll_thumb_holo.xml
Cree un nuevo archivo fastscroll_thumb_holo.xml en res / drawable / y copie el siguiente contenido. Define el selector para el pulgar de desplazamiento rápido para estados predeterminados y presionados.
Archivos fuente
Clase ListAdapter
Cree una nueva clase ” ListAdapter ” en el paquete com.androidopentutorials.fastscrolldemo.adapter .
- Esta es la clase de adaptador ListView personalizada que implementa SectionIndexer para permitir el desplazamiento rápido entre secciones de un AbsListView. Una sección es un grupo de elementos de la lista que tienen algo en común. Por ejemplo, pueden comenzar con la misma letra o pueden ser canciones del mismo artista. SectionIndexer proporciona los siguientes métodos,
getPositionForSection (int section) devuelve la posición inicial (primera) de esa sección con el adaptador de lista
getSectionForPosition (int position) devuelve el índice de la sección correspondiente dentro de la matriz de objetos de sección en esa posición dada
getSections () devuelve una matriz de objetos que representan secciones de la lista.
paquete com.androidopentutorials.fastscrolldemo.adapter;
import java.util.ArrayList;
import java.util.Collections;
importar java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Set;
importar android.content.Context;
importar android.util.Log;
importar android.widget.ArrayAdapter;
importar android.widget.SectionIndexer;
import com.androidopentutorials.fastscrolldemo.R;
La clase pública ListAdapter extiende ArrayAdapter implementa SectionIndexer {
HashMap mapIndex;
Secciones de cadena [];
Lista de frutas ;
public ListAdapter (contexto de contexto, List fruitList) {
super (contexto, R.layout.list_item, fruitList);
this.fruits = fruitList;
mapIndex = new LinkedHashMap ();
for (int x = 0; x <fruits.size (); x ++) {
Cadena fruit = fruits.get (x);
Cadena ch = fruit.substring (0, 1);
ch = ch.toUpperCase (http://Locale.US);
// HashMap evitará duplicados
mapIndex.put (ch, x);
}
Establecer sectionLetters = mapIndex.keySet ();
// crea una lista del conjunto para ordenar
ArrayList sectionList = new ArrayList (sectionLetters);
Log.d (“sectionList”, sectionList.toString ());
Collections.sort (sectionList);
secciones = nueva Cadena [sectionList.size ()];
sectionList.toArray (secciones);
}
public int getPositionForSection (sección int) {
Log.d (“sección”, “” + sección);
return mapIndex.get (secciones [sección]);
}
public int getSectionForPosition (int position) {
Log.d (“posición”, “” + posición);
devuelve 0;
}
Objeto público [] getSections () {
secciones de retorno;
}
}
Actividad principal
Esta es la clase de actividad principal. Para habilitar el desplazamiento rápido en ListView, siga los siguientes pasos,
- Establezca el modo de desplazamiento rápido en su ListViewlistViewInstance.setFastScrollEnabled (verdadero);
- Haga que su adaptador implemente la interfaz android.widget.SectionIndexer y anule los métodos para ver una letra del alfabeto en la que se encuentra actualmente durante el desplazamiento rápido.
paquete com.androidopentutorials.fastscrolldemo;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
importar android.app.ListActivity;
importar android.os.Bundle;
importar android.view.Menu;
importar android.view.View;
importar android.widget.AdapterView;
importar android.widget.AdapterView.OnItemClickListener;
importar android.widget.ListView;
importar android.widget.Toast;
import com.androidopentutorials.fastscrolldemo.adapter.ListAdapter;
clase pública MainActivity extiende ListActivity {
ListView fruitView;
@Anular
public void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
fruitView = (ListView) findViewById (http: //android.R.id.list);
fruitView.setFastScrollEnabled (verdadero);
Cadena [] frutas = getResources (). GetStringArray (R.array.fruits_array);
Lista fruitList = Arrays.asList (frutas);
Collections.sort (fruitList);
setListAdapter (nuevo ListAdapter (this, fruitList));
fruitView.setOnItemClickListener (nuevo OnItemClickListener () {
public void onItemClick (AdapterView parent, View arg1,
posición int, arg3 largo) {
Toast.makeText (getApplicationContext (),
“” + parent.getItemAtPosition (posición),
Toast.LENGTH_LONG) .show ();
}
});
}
@Anular
public boolean onCreateOptionsMenu (Menú del menú) {
getMenuInflater (). inflate (R.menu.main, menú);
volver verdadero;
}
}
- La matriz de cadenas se recupera de strings.xml. Creamos una instancia de ListAdapter que implementa SectionIndexer y establecemos esto en ListView.
Salida
Haga clic para obtener más actualizaciones de Android