Índice
Conteúdo e etapas experimentais
1. Configure o arquivo desenhável
2. Configure o arquivo listiem.xml
3. Importar para activity_main.xml
1. Defina a matriz de recursos
2. Crie uma nova matriz de lista
3. Atribua pares chave-valor, o nome personalizado é a chave e a matriz de recursos é o valor
4. Crie um ListView usando SimpleAdapter
SimpleAdapter (contexto de contexto, lista> dados, recurso int, string[] de, int[] para)
6. Defina o adaptador para ListView
Definir Adaweipter para wListView como ListView
Conteúdo e etapas experimentais
Projete a interface conforme mostrado no arquivo de layout activity_main.xml na pasta de layout e use o componente ListView para imitar a lista de livros em "Dangdang APP" para projetar a interface do APP exibida pela lista de livros
etapa:
- Configure o componente ListView no arquivo de layout principal .
- Crie um arquivo de layout de item de lista e projete o layout de item de lista
- Defina o adaptador de livro ( adaptador ) de acordo com o objeto de recurso relacionado em MainActivity .
resultado da operação:
1. Configure o arquivo desenhável
Copie book_img1~5.jpg: foto da capa do livro, index_star1~5.png: imagem de classificação por estrelas para a pasta desenhável
Link: Link do recurso de imagem
Código de extração: 1234
2. Configure o arquivo listiem.xml
Crie um novo arquivo listiem.xml na pasta de layout e escreva a IU de cada item na lista
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:padding="10dp">
<ImageView
android:id="@+id/header"
android:layout_width="240dp"
android:layout_height="100dp"
android:layout_weight="1.5"
android:scaleType="centerCrop"
android:background="#FF6200EE"
android:src="@drawable/book_1"/>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1">
<TextView
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="20dp"
android:textColor="@color/black"
android:paddingLeft="10dp"
android:text="Python编程从入到实践第二版"
android:textSize="18dp" />
<ImageView
android:id="@+id/star"
android:layout_width="65dp"
android:layout_height="20dp"
android:paddingLeft="10dp"
android:src="@drawable/index_star5"
android:scaleType="centerInside"
android:layout_below="@+id/name"/>
<TextView
android:id="@+id/pl"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:paddingLeft="10dp"
android:text="201759条评论"
android:textSize="14dp"
android:layout_below="@+id/name"
android:layout_toRightOf="@+id/star"/>
<TextView
android:id="@+id/author"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:text="作者:[美]埃里克·马瑟斯(Eric Matthes)"
android:textSize="14dp"
android:layout_below="@+id/star"/>
<TextView
android:id="@+id/cb"
android:layout_width="match_parent"
android:layout_height="20dp"
android:paddingLeft="10dp"
android:text="出版社:人民邮电出版社"
android:textSize="14dp"
android:layout_below="@id/author"/>
<TextView
android:id="@+id/flag"
android:layout_width="30dp"
android:layout_height="20dp"
android:paddingLeft="10dp"
android:text="¥"
android:textSize="18dp"
android:textColor="@color/black"
android:layout_below="@+id/cb"/>
<TextView
android:id="@+id/price"
android:layout_width="match_parent"
android:layout_height="20dp"
android:paddingLeft="10dp"
android:text="54.9"
android:textSize="18dp"
android:textColor="@color/black"
android:layout_below="@+id/cb"
android:layout_toRightOf="@+id/flag"/>
</RelativeLayout>
</LinearLayout>
Você pode ver o layout como mostrado na figura
3. Importar para activity_main.xml
No arquivo activity_main.xml, defina um ListView
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!-- 定义一个ListView -->
<ListView
android:id="@+id/listView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
4. Configure o código Java
Em MainActivity.java escreva
package com.example.a1025;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
private String[] names = new String[]{"Python编程从入门到实践第2版","深入理解计算机系统","机器学习","Redis设计与实现","深入理解Java虚拟机:JVM高级特性与实践"};
private int[] stars = new int[]{R.drawable.index_star5,R.drawable.index_star3,R.drawable.index_star4,R.drawable.index_star3,R.drawable.index_star5};
private String[] pl = new String[]{"201759条评论","30097条评论","3347条评论","13161条评论","18990条评论"};
private String[] author = new String[]{"作者:[美]埃里克·马瑟斯(Eric Matthes)","作者:(美)兰德尔 E.布莱恩特(Randal E.Bryant)等","作者:周志华","作者:黄健宏","作者:周志明"};
private String[] cbs = new String[]{"出版社:人民邮电出版社","出版社:机械工业出版社","出版社:清华大学出版社","出版社:机械工业出版社","出版社:机械工业出版社"};
private double[] price = new double[]{54.90,65.50,54.00,39.5,64.50};
private int[] imageIds = new int[]{R.drawable.book_1,R.drawable.book_2,R.drawable.book_3,R.drawable.book_4,R.drawable.book_5};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List<Map<String,Object>> listitem=new ArrayList<>();
for(int i=0;i<5;i++){
Map<String,Object>map_list=new HashMap<>();
map_list.put("header",imageIds[i]);
map_list.put("Name",names[i]);
map_list.put("Star",stars[i]);
map_list.put("pl",pl[i]);
map_list.put("author",author[i]);
map_list.put("cbs",cbs[i]);
map_list.put("price",price[i]);
listitem.add(map_list);
}
SimpleAdapter simpleAdapter=new SimpleAdapter(this,listitem,R.layout.listitem,new String[]{"header","Name","Star","pl","author","cbs","price"},new int[]{R.id.header,R.id.name,R.id.star,R.id.pl,R.id.author,R.id.cb,R.id.price});
ListView listView=findViewById(R.id.listView);
listView.setAdapter((simpleAdapter));
}
}
【Detalhes do código Java】
1. Defina a matriz de recursos
private String[] names = new String[]{"Python编程从入门到实践第2版","深入理解计算机系统","机器学习","Redis设计与实现","深入理解Java虚拟机:JVM高级特性与实践"};
private int[] stars = new int[]{R.drawable.index_star5,R.drawable.index_star3,R.drawable.index_star4,R.drawable.index_star3,R.drawable.index_star5};
private String[] pl = new String[]{"201759条评论","30097条评论","3347条评论","13161条评论","18990条评论"};
private String[] author = new String[]{"作者:[美]埃里克·马瑟斯(Eric Matthes)","作者:(美)兰德尔 E.布莱恩特(Randal E.Bryant)等","作者:周志华","作者:黄健宏","作者:周志明"};
private String[] cbs = new String[]{"出版社:人民邮电出版社","出版社:机械工业出版社","出版社:清华大学出版社","出版社:机械工业出版社","出版社:机械工业出版社"};
private double[] price = new double[]{54.90,65.50,54.00,39.5,64.50};
private int[] imageIds = new int[]{R.drawable.book_1,R.drawable.book_2,R.drawable.book_3,R.drawable.book_4,R.drawable.book_5};
2. Crie uma nova matriz de lista
List<Map<String,Object>> listitem=new ArrayList<>();
3. Atribua pares chave-valor, o nome personalizado é a chave e a matriz de recursos é o valor
for(int i=0;i<5;i++){
Map<String,Object>map_list=new HashMap<>();
map_list.put("header",imageIds[i]);
map_list.put("Name",names[i]);
map_list.put("Star",stars[i]);
map_list.put("pl",pl[i]);
map_list.put("author",author[i]);
map_list.put("cbs",cbs[i]);
map_list.put("price",price[i]);
listitem.add(map_list);
}
4. Use SimpleAdapter para criar um ListView
SimpleAdapter simpleAdapter=new SimpleAdapter(this,listitem,R.layout.listitem,new String[]{"header","Name","Star","pl","author","cbs","price"},new int[]{R.id.header,R.id.name,R.id.star,R.id.pl,R.id.author,R.id.cb,R.id.price});
Uso do SimpleAdapter
SimpleAdapter (Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
O objeto SimpleAdapter requer 5 parâmetros, os últimos 4 são a chave
- O segundo parâmetro: é um List<Map<?, extends Map<string,? >> objeto de coleção, cada Map<string,? o objeto é um item de lista
- O terceiro parâmetro: Este parâmetro especifica o ID de uma interface de layout de item de lista.
- O quarto parâmetro: um parâmetro do tipo String[], que determina a extração da classe de valor correspondente ao valor da chave no objeto Map. O item da tabela de classe gerada é: o valor da chave que precisa exibir o valor
- O quinto parâmetro: um parâmetro do tipo int[], que determina quais componentes preencher, é usar o valor de exibição Id do componente
6. Defina o adaptador para ListView
ListView listView=findViewById(R.id.listView);
listView.setAdapter((simpleAdapter));