码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Android Studio(列表视图ListView)


    前言

    前面在适配器章节,已经介绍了ListView的作用(干什么的),这节将主要介绍如何去设计ListView页面视图。

    思考

     列表视图需要些什么?

    1. 列表项容器(装载各列表项的容器):

    2. 列表项布局:my_list_item.xml

    3. 列表所需数据:List、Adapter(桥梁)

     代码示例

    下面的代码示例,是从我的项目中copy的是一个很好的例子

     

    1. // 1. 列表项容器:activity_charge_up.xml(仅展示了相关部分)
    2. <ListView
    3. android:id="@+id/cuisine_list"
    4. android:layout_width="match_parent"
    5. android:layout_height="match_parent"
    6. >
    7. ListView>
    8. // 2. 列表项布局:cuisine_list_item.xml
    9. "1.0" encoding="utf-8"?>
    10. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    11. android:layout_width="match_parent"
    12. android:layout_height="match_parent"
    13. >
    14. <RelativeLayout
    15. android:layout_width="match_parent"
    16. android:layout_height="60dp"
    17. android:background="#FEFCEB"
    18. android:layout_margin="10dp"
    19. >
    20. <TextView
    21. android:id="@+id/cuisineName"
    22. android:layout_width="75dp"
    23. android:layout_height="wrap_content"
    24. android:layout_centerVertical="true"
    25. android:layout_marginLeft="20dp"
    26. android:text="西红柿炒鸡蛋"
    27. android:textColor="@color/black"
    28. android:textSize="12sp">
    29. TextView>
    30. <TextView
    31. android:id="@+id/cuisinePrice"
    32. android:layout_width="wrap_content"
    33. android:layout_height="wrap_content"
    34. android:layout_centerVertical="true"
    35. android:layout_marginLeft="5dp"
    36. android:layout_toRightOf="@+id/cuisineName"
    37. android:text="¥99.90"
    38. android:textColor="#FF1100"
    39. android:textSize="12sp"
    40. android:textStyle="bold">
    41. TextView>
    42. <Button
    43. android:id="@+id/subCuisine"
    44. android:layout_width="30dp"
    45. android:layout_height="30dp"
    46. android:layout_centerVertical="true"
    47. android:layout_toLeftOf="@+id/cuisineQuantity"
    48. android:textSize="5dp"
    49. android:background="@drawable/sub"
    50. >
    51. Button>
    52. <TextView
    53. android:id="@+id/cuisineQuantity"
    54. android:layout_width="20dp"
    55. android:layout_height="wrap_content"
    56. android:layout_centerVertical="true"
    57. android:layout_toLeftOf="@+id/addCuisine"
    58. android:gravity="center"
    59. android:text="0"
    60. android:textColor="@color/black"
    61. android:textSize="10dp">
    62. TextView>
    63. <Button
    64. android:id="@+id/addCuisine"
    65. android:layout_width="30dp"
    66. android:layout_height="30dp"
    67. android:background="@drawable/add"
    68. android:layout_alignParentRight="true"
    69. android:layout_centerVertical="true"
    70. android:textSize="5sp">
    71. Button>
    72. RelativeLayout>
    73. RelativeLayout>

    适配器的使用很简单:

    1. MyAdapter myAdapter = new MyAdapter(参数); 
    2. ListView cuisineList = findById(R.layout.cuisine_list);
    3. cuisineList.setAdapter(myAdapter);

    复杂的是适配器的业务逻辑(适配器的实现):

        对于适配器的实现,可以参考前面适配器章节,这里就不再做具体的代码示例。

        在实际需求中,在适配器中你可能需要接受多个参数,你需要处理列表项的交互(譬如点击),你可能也需要即时地去改变列表项所在页面的相关控件内容(因为修改列表项一般也需要修改其他页面元素)。

     导航栏

    其实学习ListView后,当想到设计导航栏后,可能会想到它能否胜任导航栏的设计呢?

            并不好去设计。首先,导航栏不仅有竖直的,还有水平的;其二,导航栏不仅仅是导航栏的变化,更涉及到导航内容的变化。

            所以导航栏的设计,一般有以下两种策略:

            (1) 自己设计:导航(LinearLayout)、导航页面内容(removeAllViews+addView+LayoutInflater)

            (2) 可用控件:Fragment、ViewPager(参考链接:Android四种底部导航栏实现)

    后言

     下一节,将介绍RecyclerView的相关知识

  • 相关阅读:
    从effect理解Vue3的响应式原理
    图解关系数据库设计思想,这也太形象了
    STC15W单片机防丢语音报警GPS北斗定位测距双机LORA无线手持可充电
    Pytorch CIFAR10图像分类 Vision Transformer(ViT) 篇
    算法和数据结构解析-9 : 排序相关问题讲解
    python带你对北京二手房进行数据分析,看看大概都什么价位
    【ELK05】es的java-api操作-Java High Level REST Client常用功能
    【JAVA】01 JAVA概述
    深入理解 python 虚拟机:生成器停止背后的魔法
    测试人生 | 从传统行业到名企大厂,薪资翻倍,我做到了
  • 原文地址:https://blog.csdn.net/m0_60633107/article/details/134240669
    • 最新文章
    • 攻防演习之三天拿下官网站群
      数据安全治理学习——前期安全规划和安全管理体系建设
      企业安全 | 企业内一次钓鱼演练准备过程
      内网渗透测试 | Kerberos协议及其部分攻击手法
      0day的产生 | 不懂代码的"代码审计"
      安装scrcpy-client模块av模块异常,环境问题解决方案
      leetcode hot100【LeetCode 279. 完全平方数】java实现
      OpenWrt下安装Mosquitto
      AnatoMask论文汇总
      【AI日记】24.11.01 LangChain、openai api和github copilot
    • 热门文章
    • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
      奉劝各位学弟学妹们,该打造你的技术影响力了!
      五年了,我在 CSDN 的两个一百万。
      Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
      面试官都震惊,你这网络基础可以啊!
      你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
      心情不好的时候,用 Python 画棵樱花树送给自己吧
      通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
      13 万字 C 语言从入门到精通保姆级教程2021 年版
      10行代码集2000张美女图,Python爬虫120例,再上征途
    Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
    正则表达式工具 cron表达式工具 密码生成工具

    京公网安备 11010502049817号