• AndroidStudio案例——图书列表


    目录

    实验内容及步骤

    步骤:

    运行结果:

    1、配置drawable文件

    2、配置listiem.xml文件

     3、导入到activity_main.xml中

    4、配置Java代码

    【Java代码详解】

    1.定义资源数组

     2.新建list数组

     3.赋值键值对,自定义名称为键,资源数组为值

    4. 使用SimpleAdapter创建ListView

    SimpleAdapter的用法

    SimpleAdapter (Context context, List> data, int resource, String[] from, int[] to)

     6.为ListView设置Adapter

    为wListView设置Adaweipter为ListView


    实验内容及步骤

    在layout文件夹的布局文件activity_main.xml中设计如图界面,利用ListView组件模仿”当当APP”中的图书列表设计图书榜单显示的APP界面

    步骤:

    • 在主布局文件中设置ListView组件。
    • 建立listitem布局文件,设计列表项布局
    • MainActivity中根据相关资源对象定义图书适配器(Adapter)。

    运行结果:

    1、配置drawable文件

    将book_img1~5.jpg:图书封面照片,index_star1~5.png:星级评定图片复制到drawable文件夹中

    链接:图片资源链接
    提取码:1234 

    2、配置listiem.xml文件

    在layout文件夹中新建listiem.xml文件,写列表的每一项的UI

    1. "1.0" encoding="utf-8"?>
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3. android:layout_width="match_parent"
    4. android:layout_height="match_parent"
    5. android:orientation="horizontal"
    6. android:padding="10dp">
    7. <ImageView
    8. android:id="@+id/header"
    9. android:layout_width="240dp"
    10. android:layout_height="100dp"
    11. android:layout_weight="1.5"
    12. android:scaleType="centerCrop"
    13. android:background="#FF6200EE"
    14. android:src="@drawable/book_1"/>
    15. <RelativeLayout
    16. android:layout_width="wrap_content"
    17. android:layout_height="wrap_content"
    18. android:layout_weight="1">
    19. <TextView
    20. android:id="@+id/name"
    21. android:layout_width="match_parent"
    22. android:layout_height="20dp"
    23. android:textColor="@color/black"
    24. android:paddingLeft="10dp"
    25. android:text="Python编程从入到实践第二版"
    26. android:textSize="18dp" />
    27. <ImageView
    28. android:id="@+id/star"
    29. android:layout_width="65dp"
    30. android:layout_height="20dp"
    31. android:paddingLeft="10dp"
    32. android:src="@drawable/index_star5"
    33. android:scaleType="centerInside"
    34. android:layout_below="@+id/name"/>
    35. <TextView
    36. android:id="@+id/pl"
    37. android:layout_width="wrap_content"
    38. android:layout_height="20dp"
    39. android:paddingLeft="10dp"
    40. android:text="201759条评论"
    41. android:textSize="14dp"
    42. android:layout_below="@+id/name"
    43. android:layout_toRightOf="@+id/star"/>
    44. <TextView
    45. android:id="@+id/author"
    46. android:layout_width="match_parent"
    47. android:layout_height="wrap_content"
    48. android:paddingLeft="10dp"
    49. android:text="作者:[美]埃里克·马瑟斯(Eric Matthes)"
    50. android:textSize="14dp"
    51. android:layout_below="@+id/star"/>
    52. <TextView
    53. android:id="@+id/cb"
    54. android:layout_width="match_parent"
    55. android:layout_height="20dp"
    56. android:paddingLeft="10dp"
    57. android:text="出版社:人民邮电出版社"
    58. android:textSize="14dp"
    59. android:layout_below="@id/author"/>
    60. <TextView
    61. android:id="@+id/flag"
    62. android:layout_width="30dp"
    63. android:layout_height="20dp"
    64. android:paddingLeft="10dp"
    65. android:text="¥"
    66. android:textSize="18dp"
    67. android:textColor="@color/black"
    68. android:layout_below="@+id/cb"/>
    69. <TextView
    70. android:id="@+id/price"
    71. android:layout_width="match_parent"
    72. android:layout_height="20dp"
    73. android:paddingLeft="10dp"
    74. android:text="54.9"
    75. android:textSize="18dp"
    76. android:textColor="@color/black"
    77. android:layout_below="@+id/cb"
    78. android:layout_toRightOf="@+id/flag"/>
    79. RelativeLayout>
    80. LinearLayout>

    可以看到排版如图

     

     3、导入到activity_main.xml中

    在activity_main.xml文件中,定义一个ListView

    1. "1.0" encoding="utf-8"?>
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3. xmlns:app="http://schemas.android.com/apk/res-auto"
    4. xmlns:tools="http://schemas.android.com/tools"
    5. android:layout_width="match_parent"
    6. android:layout_height="match_parent"
    7. tools:context=".MainActivity">
    8. <ListView
    9. android:id="@+id/listView"
    10. android:layout_width="wrap_content"
    11. android:layout_height="wrap_content" >
    12. ListView>
    13. LinearLayout>

    4、配置Java代码

    在MainActivity.java中写道

    1. package com.example.a1025;
    2. import androidx.appcompat.app.AppCompatActivity;
    3. import android.os.Bundle;
    4. import android.widget.ListView;
    5. import android.widget.SimpleAdapter;
    6. import java.util.ArrayList;
    7. import java.util.HashMap;
    8. import java.util.List;
    9. import java.util.Map;
    10. public class MainActivity extends AppCompatActivity {
    11. private String[] names = new String[]{"Python编程从入门到实践第2版","深入理解计算机系统","机器学习","Redis设计与实现","深入理解Java虚拟机:JVM高级特性与实践"};
    12. 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};
    13. private String[] pl = new String[]{"201759条评论","30097条评论","3347条评论","13161条评论","18990条评论"};
    14. private String[] author = new String[]{"作者:[美]埃里克·马瑟斯(Eric Matthes)","作者:(美)兰德尔 E.布莱恩特(Randal E.Bryant)等","作者:周志华","作者:黄健宏","作者:周志明"};
    15. private String[] cbs = new String[]{"出版社:人民邮电出版社","出版社:机械工业出版社","出版社:清华大学出版社","出版社:机械工业出版社","出版社:机械工业出版社"};
    16. private double[] price = new double[]{54.90,65.50,54.00,39.5,64.50};
    17. 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};
    18. @Override
    19. protected void onCreate(Bundle savedInstanceState) {
    20. super.onCreate(savedInstanceState);
    21. setContentView(R.layout.activity_main);
    22. List> listitem=new ArrayList<>();
    23. for(int i=0;i<5;i++){
    24. Mapmap_list=new HashMap<>();
    25. map_list.put("header",imageIds[i]);
    26. map_list.put("Name",names[i]);
    27. map_list.put("Star",stars[i]);
    28. map_list.put("pl",pl[i]);
    29. map_list.put("author",author[i]);
    30. map_list.put("cbs",cbs[i]);
    31. map_list.put("price",price[i]);
    32. listitem.add(map_list);
    33. }
    34. 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});
    35. ListView listView=findViewById(R.id.listView);
    36. listView.setAdapter((simpleAdapter));
    37. }
    38. }

    【Java代码详解】

    1.定义资源数组

    1. private String[] names = new String[]{"Python编程从入门到实践第2版","深入理解计算机系统","机器学习","Redis设计与实现","深入理解Java虚拟机:JVM高级特性与实践"};
    2.     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};
    3.     private String[] pl = new String[]{"201759条评论","30097条评论","3347条评论","13161条评论","18990条评论"};
    4.     private String[] author = new String[]{"作者:[美]埃里克·马瑟斯(Eric Matthes)","作者:(美)兰德尔 E.布莱恩特(Randal E.Bryant)等","作者:周志华","作者:黄健宏","作者:周志明"};
    5.     private String[] cbs = new String[]{"出版社:人民邮电出版社","出版社:机械工业出版社","出版社:清华大学出版社","出版社:机械工业出版社","出版社:机械工业出版社"};
    6.     private double[] price = new double[]{54.90,65.50,54.00,39.5,64.50};
    7.     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.新建list数组

    List> listitem=new ArrayList<>();

     3.赋值键值对,自定义名称为键,资源数组为值

    1. for(int i=0;i<5;i++){
    2. Mapmap_list=new HashMap<>();
    3. map_list.put("header",imageIds[i]);
    4. map_list.put("Name",names[i]);
    5. map_list.put("Star",stars[i]);
    6. map_list.put("pl",pl[i]);
    7. map_list.put("author",author[i]);
    8. map_list.put("cbs",cbs[i]);
    9. map_list.put("price",price[i]);
    10. listitem.add(map_list);
    11. }

    4. 使用SimpleAdapter创建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});

    SimpleAdapter的用法

    SimpleAdapter (Context context, List> data, int resource, String[] from, int[] to)

    SimpleAdapter对象,需要5个参数,后面4个是关键

    • 第2个参数:是一个List>的集合对象,集合中的每个 Map对象是一个列表项
    • 第3个参数:该参数指定一个列表项布局界面的ID。
    • 第4个参数:一个String[]类型的参数,决定提取Map对象中的那些key值对应的value类生成类表项 就是:需要显示value的key值
    • 第5个参数:int[]类型的参数,决定填充哪些 组件,就是使用显示值得组件Id

     6.为ListView设置Adapter

    1. ListView listView=findViewById(R.id.listView);
    2. listView.setAdapter((simpleAdapter));

    为wListView设置Adaweipter为ListView

  • 相关阅读:
    【星球】【slam】研讨会 (3)ViSLAM 算法框架,原理,对比,评测 论文解读 ORB—SLAM3
    Everything——检索神兵
    OJ练习第180题——颠倒二进制位
    使用vue-cli搭建SPA项目
    工具安装手册
    集成学习 | MATLAB集成学习算法比较
    量子计算:数据安全难题
    ISP代理是什么?怎么用?
    Apache Shiro 漏洞复现
    MATLAB | 全网唯一 ,MATLAB绘制阴影柱状图(填充斜线)
  • 原文地址:https://blog.csdn.net/m0_52177571/article/details/127540244