【Android开发】 ListView使用实战详解,你get到了嘛?

简介: 【Android开发】 ListView使用实战详解,你get到了嘛?

 

目录

一、什么是ListView?

二、ListView的简单用法

三、ListView点击响应事件


hello,你好呀,我是灰小猿!一个超会写BUG的程序猿!

今天在这里记录一下Android开发中有关Listview的使用教程,同时也是对所学知识的一个巩固!

一、什么是ListView?

ListView是Android开发中的一个列表框,它能够将你要展示的信息以横向列表的形式展现出来,来看一个效果:

image.gif编辑

二、ListView的简单用法

在·xml中,Listview有以下几个基本的属性

    • android:divider="#f00"               分割线的颜色
    • android:dividerHeight="2dp"       分割条的高度
    • android:cacheColorHint="#0fff"   当列表使用背景图之后,下拉或者上拉都会出现一个问题:背景图不见了
    • android:scrollingCache="false"    当列表使用背景图之后,下拉或者上拉都会出现一个问题:出现黑色块
    • android:fadingEdge="none"        当发现上下拉的时候,上下边出现阴影
    • android:listSelector="#0000"       去掉点击ltem时的背景

    那么在实际的开发中应该如何使用它呢?

    1)首先新建一个项目,在activity_main.xml 文件中加入listview控件,如下所示:

    将控件的宽高设置成match_parent 占满整个空间

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout 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=".moveice_view">
        <ListView
            android:id="@+id/moveiceList"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            tools:ignore="MissingConstraints">
        </ListView>
    </androidx.constraintlayout.widget.ConstraintLayout>

    image.gif

    2)配置MainActivity代码

    ListView的使用是,建立一个字符型数组,其中存放要显示的每一行内容,但是listview中设置的参数是Adapter类型的,显然不能直接将string数组作为参数传入,因此我们需要用到一个ArrayAdapter类作为一个桥梁作用,来对string数组进行转换一下,

    可能逻辑性有点强,不太容易理解,直接看下面的代码:

    package com.example.summarizepj;
    import androidx.appcompat.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.Toast;
    public class moveice_view extends AppCompatActivity {
        ListView moveiceList;
        String [] moveice_arr = {"肖申克的救赎","阿甘正传","明天会更好","速度与激情","建军大业","你好李焕英"};
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_moveice_view);
            moveiceList = findViewById(R.id.moveiceList);
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(moveice_view.this,android.R.layout.simple_list_item_1,moveice_arr);
            moveiceList.setAdapter(adapter);
        }
    }

    image.gif

    现在对ArrayAdapter做一下解释,

    在这里我运用了系统包含的一个TextView的布局文件:android.R.layout.simple_expandable_list_item_1,调用这个比较方便,它有以下五个参数

      • android.R.layout.simple_list_item_1   一行text
      • android.R.layout.simple_list_item_2   一行title,一行text
      • android.R.layout.simple_list_item_single_choice   单选按钮
      • android.R.layout.simple_list_item_multiple_choice   多选按钮
      • android.R.layout.simple_list_item_checked    checkbox

      ArrayAdapter<String> adapter = new ArrayAdapter<String>(  MainActivity.this, android.R.layout.simple_list_item_1, data);  的意思是:创建一个数组适配器的代码,里面有三个参数,第一个参数是上下文,就是当前的Activity, 第二个参数是android sdk中自己内置的一个布局,它里面只有一个TextView,这个参数是表明我们数组中每一条数据的布局是这个view,就是将每一条数据都显示在这个 view上面;第三个参数就是我们要显示的数据。listView会根据这三个参数,遍历data里面的每一条数据,读出一条,显示到第二 个参数对应的布局中,这样就形成了我们看到的listView.

      运行上面代码以后得到这样的效果图:

      image.gif编辑

      三、ListView点击响应事件

      但是上面的代码在点击相应的按钮时是无响应的,像我们平常在app上看到的那些点击之后都是有事件触发的,那么我们接下来就来给listview控件添加事件响应,

      在这里要注意的是:为listview控件添加的事件监听与平常给button控件添加监听使用的方法不一样,在这里使用的是setOnItemClickListener方法,具体使用如下:

      package com.example.summarizepj;
      import androidx.appcompat.app.AppCompatActivity;
      import android.os.Bundle;
      import android.view.View;
      import android.widget.AdapterView;
      import android.widget.ArrayAdapter;
      import android.widget.ListView;
      import android.widget.Toast;
      public class moveice_view extends AppCompatActivity {
          ListView moveiceList;
          String [] moveice_arr = {"肖申克的救赎","阿甘正传","明天会更好","速度与激情","建军大业","你好李焕英"};
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_moveice_view);
              moveiceList = findViewById(R.id.moveiceList);
              ArrayAdapter<String> adapter = new ArrayAdapter<String>(moveice_view.this,android.R.layout.simple_list_item_1,moveice_arr);
              moveiceList.setAdapter(adapter);
              moveiceList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                  @Override
                  public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                      String result = parent.getItemAtPosition(position).toString();
                      switch (result){
                          case "肖申克的救赎":{
                              Toast.makeText(moveice_view.this, "您点击了" + result, Toast.LENGTH_SHORT).show();
                          }
                          break;
                          case "阿甘正传":{
                              Toast.makeText(moveice_view.this,"您点击了" + result,Toast.LENGTH_SHORT).show();
                          }
                          break;
                          case "明天会更好":{
                              Toast.makeText(moveice_view.this,"您点击了" + result,Toast.LENGTH_SHORT).show();
                          }
                          break;
                      }
                  }
              });
          }
      }

      image.gif

      当点击了对应的列表控件之后,显示的效果如下:

      image.gif编辑

      至此,listview的使用及点击响应就做完了,

      有问题的小伙伴记得在评论区留言提出!

      觉得不错记得点赞关注哟!

      image.gif编辑

      目录
      相关文章
      |
      2天前
      |
      JavaScript 前端开发 Java
      FFmpeg开发笔记(四十七)寒冬下安卓程序员的几个技术转型发展方向
      IT寒冬使APP开发门槛提升,安卓程序员需转型。选项包括:深化Android开发,跟进Google新技术如Kotlin、Jetpack、Flutter及Compose;研究Android底层框架,掌握AOSP;转型Java后端开发,学习Spring Boot等框架;拓展大前端技能,掌握JavaScript、Node.js、Vue.js及特定框架如微信小程序、HarmonyOS;或转向C/C++底层开发,通过音视频项目如FFmpeg积累经验。每条路径都有相应的书籍和技术栈推荐,助你顺利过渡。
      13 3
      FFmpeg开发笔记(四十七)寒冬下安卓程序员的几个技术转型发展方向
      |
      1天前
      |
      Linux Android开发 iOS开发
      Android经典实战之Kotlin Multiplatform跨平台开发
      KMP(Kotlin Multiplatform)是由JetBrains开发的开源技术,让开发者能在多平台间高效重用代码,保留原生编程优势。适用于Android/iOS应用、多平台库及桌面应用开发。KMP支持代码共享、预期与实际声明机制,具备灵活性、稳定性和性能优势。通过Compose Multiplatform可实现跨平台UI共享。开发者可访问官方文档开始学习。
      7 1
      |
      1天前
      |
      搜索推荐 Android开发 iOS开发
      探索安卓与iOS开发的差异性与互补性
      【8月更文挑战第19天】在移动应用开发的广阔天地中,安卓与iOS两大平台各据一方,引领着行业的潮流。本文将深入探讨这两个平台在开发过程中的不同之处以及它们之间的互补关系,旨在为开发者提供一个全面的视角,帮助他们更好地把握市场动态,优化开发策略。通过分析各自的开发环境、编程语言、用户界面设计、性能考量及市场分布等方面,我们将揭示安卓与iOS开发的独特魅力和挑战,同时指出如何在这两者之间找到平衡点,实现跨平台的成功。
      |
      3天前
      |
      移动开发 开发工具 Android开发
      探索安卓与iOS开发的差异:技术选择的影响
      【8月更文挑战第17天】 在移动应用开发的广阔天地中,安卓和iOS两大平台各领风骚。本文通过比较这两个平台的编程语言、开发工具及市场策略,揭示了技术选择对开发者和产品成功的重要性。我们将从开发者的视角出发,深入探讨不同平台的技术特性及其对项目实施的具体影响,旨在为即将步入移动开发领域的新手提供一个清晰的指南,同时给予资深开发者新的思考角度。
      |
      1天前
      |
      移动开发 Android开发 iOS开发
      揭秘移动开发之谜:安卓与iOS之间的技术鸿沟有多深?探索两大平台的开发差异及其对应用性能和用户体验的惊人影响!
      【8月更文挑战第19天】在移动应用开发领域,安卓与iOS占据主导地位。两者在技术架构、开发工具及市场分布上各有特色。本文通过案例对比分析,展示安卓使用Java/Kotlin与iOS采用Swift/Objective-C的语言差异;探讨iOS统一细腻设计与安卓自定义Material Design的UI区别;并讨论安卓广泛市场覆盖与iOS高用户价值对开发者策略的影响。理解这些差异有助于制定有效的开发计划。
      |
      1天前
      |
      编译器 API Android开发
      Android经典实战之Kotlin Multiplatform 中,如何处理不同平台的 API 调用
      本文介绍Kotlin Multiplatform (KMP) 中使用 `expect` 和 `actual` 关键字处理多平台API调用的方法。通过共通代码集定义预期API,各平台提供具体实现,编译器确保正确匹配,支持依赖注入、枚举类处理等,实现跨平台代码重用与原生性能。附带示例展示如何定义跨平台函数与类。
      6 0
      |
      1天前
      |
      安全 Android开发 iOS开发
      探索安卓与iOS开发的差异:平台特性与用户体验的比较
      【8月更文挑战第19天】 在移动应用开发的广阔天地中,安卓与iOS两大平台各领风骚。本文将深入探讨这两个平台在开发过程中的关键差异,从编程语言和工具到用户界面设计,再到市场分布和安全性考虑。我们将一窥究竟,是什么让安卓开发如此灵活多变,又是什么让iOS开发显得精致而统一。通过这篇比较分析,开发者可以更清晰地认识到各自平台的优势和挑战,从而做出更明智的开发决策。
      8 0
      |
      3天前
      |
      编译器 Android开发 开发者
      Android经典实战之Kotlin 2.0 迁移指南:全方位优化与新特性解析
      本文首发于公众号“AntDream”。Kotlin 2.0 已经到来,带来了 K2 编译器、多平台项目支持、智能转换等重大改进。本文提供全面迁移指南,涵盖编译器升级、多平台配置、Jetpack Compose 整合、性能优化等多个方面,帮助开发者顺利过渡到 Kotlin 2.0,开启高效开发新时代。
      6 0
      |
      3月前
      |
      存储 Java 开发工具
      Android开发的技术与开发流程
      Android开发的技术与开发流程
      327 1
      |
      7天前
      |
      编解码 Android开发 iOS开发
      安卓与iOS开发:平台差异下的技术创新之路
      在数字时代的浪潮中,移动应用开发如同两股潮流——安卓与iOS,各自携带着独特的技术生态和文化基因。本文将深入探讨这两大平台的开发环境、编程语言和工具的差异,以及它们如何塑造了不同的用户体验和技术趋势。通过比较分析,我们旨在揭示跨平台开发的可能性和挑战,同时探索未来技术创新的方向。让我们一起跟随代码的足迹,穿越安卓的开放草原和iOS的精密园林,发现那些隐藏在平台差异之下的创新机遇。
      16 1