Vista de lista de Android

Tabla de contenido

teoría:

Descripción general de la vista de lista

Documentación de API de vista de lista

Vista de lista Cuatro elementos

 Cuatro adaptadores comunes

Documentación de la API del adaptador de matriz

Constructor de adaptador de matriz

 Descripción de parámetros del quinto método de construcción.

 Ejemplo específico: lectura de poemas antiguos

Cree una aplicación de Android basada en la plantilla de actividad vacía - ReadAncientPoetry

 Copie la imagen de fondo en el directorio dibujable

 Abra el archivo de recursos de cadena strings.xml e ingrese el código:

Abra el archivo de recursos de diseño principal activity_main.xml

Cree una nueva plantilla de elemento de lista de poesía poema_lista_elemento.xml e ingrese el código

 Abra la clase de interfaz principal: código de entrada MainActivity

Inicie la aplicación para ver el efecto.

Crear interfaz de contenido

Modifique la interfaz de contenido para mostrar el contenido de poemas antiguos.

Inicie la aplicación para ver el efecto:


teoría:

Descripción general de la vista de lista

La vista de lista (ListView) hereda la vista de lista abstracta (AbsListView), que a su vez hereda la vista de adaptador (AdapterView). Las vistas de adaptador tienen una característica común, que es usar adaptadores para enlazar fuentes de datos y mostrar controles.

Documentación de API de vista de lista

https://developer.android.google.cn/reference/android/widget/ArrayAdapter?hl=en

 

Vista de lista Cuatro elementos

elemento ilustrar
control de lista Mostrar múltiples opciones para que el usuario elija
adaptador adaptador de matriz, adaptador simple, adaptador de cursor, adaptador base
fuente de datos Arrays, ArrayLists, Cursores...
plantilla de elemento de lista Recursos de la plataforma, definidos por el usuario

Cuatro elementos de la vista de lista: control de lista, adaptador, plantilla de elemento de lista y origen de datos

 Cuatro adaptadores comunes

Vista de lista (ListView), que es un nieto de AdapterView, une la fuente de datos a través del adaptador como un puente de viga

adaptador significado
ArrayAdapter adaptador de matriz
Adaptador simple adaptador sencillo
Adaptador de cursor simple Adaptador de cursor simple
BaseAdapter adaptador base

Documentación de la API del adaptador de matriz

https://developer.android.google.cn/reference/android/widget/ArrayAdapter?hl=en

Constructor de adaptador de matriz

El adaptador de matriz proporciona métodos de construcción sobrecargados 6. Usaremos el quinto método en los siguientes casos.

 Descripción de parámetros del quinto método de construcción.

 Ejemplo específico: lectura de poemas antiguos

Crear una aplicación de Android basada en Empty Activityuna plantilla - ReadAncientPoetry

 Copie la imagen de fondo en drawableel directorio.

 Abrir archivo de recursos de cadenastrings.xml输入代码:

 Código específico:

<resources> 
    <string name="app_name">Leer poemas antiguos</string> 
    <string name="back">Volver al contenido</string> 
    <string-array name="titles"> 
        <item>Pensamientos de una noche tranquila< /item> 
        <item>Subiendo a la Torre Cigüeña</item> 
        <item>Acacia</item> 
        <item>Escuchando el piano</item> 
        <item>Subiendo al Leyouyuan</item> 
        <item>Chaofa Baidicheng</ item > 
        <item>Lluvia nocturna de Bashan</item> 
        <item>Canción de Weicheng</item> 
        <item>Lluvia feliz en una noche de primavera</item> 
        <item>Liliyuan Shangcao</item> 
        <item>Ducha</item > 
    </matriz-de-cadenas> 

    <matriz-de-cadenas nombre="autores"> 
        <item>Tang·Li Bai</item> 
        <item>Tang·Wang Zhihuan</item> 
        <item>Tang·Wang Wei</item> 
        <item>Tang·Liu Changqing</item>
        <item>Tang·Li Shangyin</item> 
        <item>Tang·Li Bai</item> 
        <item>Tang·Du Mu</item> <item>Tang·Wang 
        Wei</item> 
        <item>Tang·Du Fu</item> 
        <item>Tang·Bai Juyi</item> 
        <item>Song·Lu You</item> 
    </string-array> 

    <string-array name="contents"> 
        <item>Luz de luna frente a la cama,\nsospechosa de estar en el suelo Frost. \nMira hacia la luna brillante,\nMira hacia abajo y piensa en tu ciudad natal. </item> 
        <item>El sol está al final de la montaña,\nEl río Amarillo desemboca en el mar. \nSi quieres ver mil millas,\n ve a un nivel superior. </item> 
        <item>Los frijoles rojos nacen en el país del sur,\nLlega la primavera y envía algunas ramas. \nPuedes elegir más,\nEsta cosa es la más enferma de amor. </item> 
        <item>Ling Ling Seven Strings,\nEscucha el viento y el frío en el pino. \nAunque las viejas melodías son amor propio,\nmuchas personas no las tocan hoy en día. </item> 
        <item>Xiang Wan se sintió mal,\nmanejó hasta Guyuan. \nEl sol poniente es infinitamente bueno,\nEstá cerca del anochecer. </elemento> 
        <elemento> Chaoci Baidi entre las nubes de colores,\nMiles de millas de Jiangling serán devueltas en un día. \nLos simios a ambos lados del estrecho no pueden dejar de llorar,\nEl bote ligero ha pasado las Diez Mil Montañas. 
        </item> <item>No hay fecha límite para su regreso, \nLa lluvia nocturna de Bashan se eleva estanque de otoño. \n ¿Por qué cortar juntas las velas de la ventana oeste, \n sino hablar de la lluvia nocturna en Basán? </elemento>
        <item>La lluvia de la mañana en Weicheng es ligera y el polvo es ligero,\nLas casas de huéspedes son verdes y los sauces son nuevos. \nTe aconsejo que bebas más vino, \nNo hay ningún viejo amigo en el oeste de Yangguan. </item> 
        <item>La buena lluvia conoce la estación, cuando llega la primavera. \nInfiltrarse en la noche con el viento, humedecer las cosas en silencio. \nLos caminos salvajes y las nubes están oscuros, pero los barcos fluviales y las hogueras están solos. \nLugar húmedo rojo de Xiao Kan, ciudad oficial de Hua Chongjin. </item> 
        <item>Li Liyuan está en la hierba, tiene un año y un año. \nEl fuego salvaje es interminable y la brisa primaveral sopla de nuevo. \nFar Fang invade el camino antiguo, y el verde claro conecta la ciudad árida. \nDespide a Wang Sun de nuevo, lleno de amor. </item> 
        <item>Cuando mueras, sabrás que todo está vacío,\npero, lamentablemente, Kyushu no será el mismo. \nWang Shibei estableció el Día de las Planicies Centrales, \nnunca se olvidarán los sacrificios familiares para decirle a Nai Weng. </item> 
    </string-array> 

</resources>

Abra el archivo de recursos de diseño principalactivity_main.xml

 Código específico:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas .android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/background" 
    android:padding="15dp" 
    tools:context=".MainActivity"> 

    <ListView 
        android :id="@+id/lv_poem_title" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:divider="#aaaaaa" 
        android:dividerHeight="0.5dp" 
        /> 


</LinearLayout>

Nueva plantilla de elemento de lista de poesía poem_list_item.xml并输入代码

 

 

Código específico:

<?versión xml="1.0" codificación="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tv_poem_title " 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_vertical" 
    android:minHeight="80dp" 
    android:textColor="#0000ff" 
    android:textSize="25sp" />

 Abra la clase de interfaz principal - MainActivity输入代码

 

 Código específico:

paquete net.zyt.read_ancient_poetry; 

importar androidx.appcompat.app.AppCompatActivity; 

importar android.content.Intent; 
importar android.os.Bundle; 
importar android.view.View 
; 
importar android.widget.AdapterView;; 
importar android.widget. ListView; 
importar android.widget.Toast; 

clase pública MainActivity extiende AppCompatActivity { 
    private ListView lvPoemTitle;//lista de títulos de poesía control-display 
    private ArrayAdapter<String> adaptador;//array adaptador-puente 
    private String[] títulos;//título de poesía array - fuente de datos 


    @Override 
    protected void onCreate(Bundle SavedInstanceState) { 
        super.onCreate(savedInstanceState); 
        //usar el archivo de recursos de diseño para establecer la interfaz de usuario
        setContentView(R.layout.activity_main); 
        //Obtenga la instancia de control a través del identificador de recursos 
        lvPoemTitle=findViewById(R.id.lv_poem_title); 

        //Inicialice la matriz de títulos de poemas antiguos como la fuente de datos de la lista de control 
       titles=getResources( ).getStringArray( R.array.titles); 
        //Agregue un número de serie al título del poema 
        para (int i=0; i<titles.length;i++){ 
            titles[i]=(i+1)+ "."+titles[i]; 
        } 
        //Cree un adaptador de matriz como un puente que conecte el control de lista y el 
        adaptador de origen de datos=new ArrayAdapter<>( 
                this,//context-current window 
                R.layout.poem_list_item,// list item template-custom design resource 
                titles// Data source - string data group 
        ); 
        //Establecer el adaptador para el control de lista 
        lvPoemTitle.setAdapter(adapter); 
        //registrar elemento de escucha de clics para control de lista
        lvPoemTitle.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
            @Override 
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { 
                Toast.makeText(MainActivity.this,"Has elegido un poema antiguo[" +títulos [posición]+"]",Toast.LENGTH_SHORT).show(); 
           //Crear intento para realizar el salto 
                Intento intento=nuevo Intento(MainActivity.this,ContentActivity.class); 
                //Transportar datos a través del intento (lista seleccionada item position) 
                intent.putExtra("position",position); 
                //Inicie la clave principal de destino de acuerdo con el intent 
                startActivity(intent); 

            } 
        }); 
    } 
}

Inicie la aplicación para ver el efecto.

 

Crear interfaz de contenido

Cree una interfaz para mostrar el contenido de poemas antiguos basada en plantillasContentActivity

 

Abra el archivo de recursos de diseño de la interfazcontent_activity.xml输入代码:

 Código específico:
 

<?versión xml="1.0" codificación="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height ="match_parent" 
    android:background="@drawable/background" 
    android:paddingRight="10dp" 
    android:gravity="center" 
    android:orientation="vertical"> 

    <TextView 
        android:id="@+id/tv_title" 
        android :layout_width="wrap_content" 
        android:layout_height="0dp" 
        android:layout_marginTop="30dp" 
        android:layout_marginBottom="20dp"
        androide:layout_weight="1"  
        android:gravity="center_vertical"
        androide:textColor="#ff00ff" 
        android:textSize="40sp" /> 

    <TextView 
        android:id="@+id/tv_author" 
        android:layout_width="wrap_content" 
        android:layout_height="0dp" 
        android:layout_marginBottom="20dp " 
        android:layout_weight="1" 
        android:gravity="center_vertical" 
        android:textColor="#000000" 
        android:textSize="25sp" /> 

    <TextView 
        android:id="@+id/tv_content" 
        android:layout_width=" wrap_content" 
        android:layout_height="0dp" 
        android:layout_marginBottom="20dp" 
        android:layout_weight="8"
        android:textColor="#0000ff" 
        android:textSize="30sp" /> 

    <Botón
        android:id="@+id/btn_back" 
        android:layout_width="match_parent" 
        android:layout_height="0dp" 
        android:layout_weight="1" 
        android:onClick="doBack" 
        android:text="@string/back" 
        android :textSize="20sp" /> 
</LinearLayout>

Modifique la interfaz de contenido para mostrar el contenido de poemas antiguos.

Abra la interfaz de contenidoContentActivity

 

 Código específico:

paquete net.zyt.read_ancient_poetry; 

importar androidx.appcompat.app.AppCompatActivity; 

importar android.content.Intent; 
importar android.os.Bundle; 
importar android.view.View; 
importar android.widget.TextView; 

clase pública ContentActivity extiende AppCompatActivity { 
    private TextView tvTitle;//etiqueta de título 
    private TextView tvAuthor;//etiqueta de autor 
    private TextView tvContent;//etiqueta de contenido 
    private String[] títulos;//matriz de título 
    private String[] autores;//matriz de autor 
    private String[] contenidos; //Content array 

    @Override 
    protected void onCreate(Bundle SavedInstanceState) { 
        super.onCreate(savedInstanceState); 
        //Usar el archivo de recursos de diseño para configurar la interfaz de usuario
        setContentView(R.layout.activity_content); 
        //Obtenga la instancia de control a través del identificador de recurso 
        tvTitle=findViewById(R.id.tv_title); 
        tvAuthor=findViewById(R.id.tv_author); 
        tvContent=findViewById(R.id.tv_content ); 
        //Obtenga la intención del salto de ventana 
        Intento intent=getIntent(); 
        //Juzgue si el intento está vacío 
        if (intent!=null){ 
            //Obtenga los datos transportados por el intento 
            int position=intent.getIntExtra(" position",0); 
            //Obtener una matriz de títulos de poemas antiguos 
            titles=getResources().getStringArray(R.array.titles); 
            //Obtener una matriz de autores de poemas antiguos 
            author=getResources().getStringArray(R.array .autores); 
            //Obtener etiquetas de contenido de poemas antiguos 
            contents=getResources().getStringArray (R. array.contents);
            //Establece el texto de la etiqueta del título 
            tvTitle.setText(titles[position]); 
            //Establece el texto de la etiqueta del autor 
            tvAuthor.setText(authors[position]); 
            //Establece el texto de la etiqueta del contenido 
            tvContent.setText(contents[position]) ; 

        } 
    } 
    public void doBack(Ver vista){ 
        finish();//Cerrar la ventana actual 
    } 
}

Inicie la aplicación para ver el efecto:

Supongo que te gusta

Origin blog.csdn.net/hollow_future/article/details/127970655
Recomendado
Clasificación