热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

【Android开发】ListView使用实战详解,你get到了嘛?-目录一、什么是ListView?二、ListView的简单用法三、ListView点击响应事件hel

目录

一、什么是ListView?

二、ListView的简单用法

三、ListView点击响应事件


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

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

一、什么是ListView?

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

 

二、ListView的简单用法

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

  • android:divider="#f00"                分割线的颜色

  • android:divider       分割条的高度

  • android:cacheColorHint="#0fff"    当列表使用背景图之后,下拉或者上拉都会出现一个问题:背景图不见了

  • android:scrollingCache="false"     当列表使用背景图之后,下拉或者上拉都会出现一个问题:出现黑色块

  • android:fadingEdge="none"        当发现上下拉的时候,上下边出现阴影

  • android:listSelector="#0000"       去掉点击ltem时的背景

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

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

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




    

    

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 adapter = new ArrayAdapter(moveice_view.this,android.R.layout.simple_list_item_1,moveice_arr);
        moveiceList.setAdapter(adapter);

    }
}

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

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

三、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 adapter = new ArrayAdapter(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;
                }
            }
        });
    }
}

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

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

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

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


推荐阅读
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 深入解析 Android IPC 中的 Messenger 机制
    本文详细介绍了 Android 中基于消息传递的进程间通信(IPC)机制——Messenger。通过实例和源码分析,帮助开发者更好地理解和使用这一高效的通信工具。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
  • 本文详细介绍了如何在Android 4.4及以上版本中配置WebView以实现内容的自动高度调整和屏幕适配,确保中文显示正常,并提供代码示例。 ... [详细]
  • 本文详细介绍了如何在 Android 中使用值动画(ValueAnimator)来动态调整 ImageView 的高度,并探讨了相关的关键属性和方法,包括图片填充后的高度、原始图片高度、动画变化因子以及布局重置等。 ... [详细]
  • 本文将详细探讨 Java 中提供的不可变集合(如 `Collections.unmodifiableXXX`)和同步集合(如 `Collections.synchronizedXXX`)的实现原理及使用方法,帮助开发者更好地理解和应用这些工具。 ... [详细]
  • 在寻找轻量级Ruby Web框架的过程中,您可能会遇到Sinatra和Ramaze。两者都以简洁、轻便著称,但它们之间存在一些关键区别。本文将探讨这些差异,并提供详细的分析,帮助您做出最佳选择。 ... [详细]
  • 当unique验证运到图片上传时
    2019独角兽企业重金招聘Python工程师标准model:public$imageFile;publicfunctionrules(){return[[[na ... [详细]
  • 黑马头条项目:Vue 文章详情模块与交互功能实现
    本文详细介绍了如何在黑马头条项目中配置文章详情模块的路由、获取和展示文章详情数据,以及实现关注、点赞、不喜欢和评论功能。通过这些步骤,您可以全面了解如何开发一个完整的前端文章详情页面。 ... [详细]
  • 探讨 HDU 1536 题目,即 S-Nim 游戏的博弈策略。通过 SG 函数分析游戏胜负的关键,并介绍如何编程实现解决方案。 ... [详细]
  • 本文详细介绍了Java中实现异步调用的多种方式,包括线程创建、Future接口、CompletableFuture类以及Spring框架的@Async注解。通过代码示例和深入解析,帮助读者理解并掌握这些技术。 ... [详细]
  • 本文旨在探讨如何利用决策树算法实现对男女性别的分类。通过引入信息熵和信息增益的概念,结合具体的数据集,详细介绍了决策树的构建过程,并展示了其在实际应用中的效果。 ... [详细]
  • 本文介绍了如何在iOS应用中自定义导航栏按钮,包括使用普通按钮和图片生成导航条专用按钮的方法。同时,探讨了在不同版本的iOS系统中实现多按钮布局的技术方案。 ... [详细]
author-avatar
王漻_957
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有