返回顶部
首页 > 资讯 > 移动开发 >深入浅出学习Android ListView基础
  • 326
分享到

深入浅出学习Android ListView基础

listview深入浅出Android 2022-06-06 09:06:10 326人浏览 薄情痞子
摘要

ListView 简介 ListView 是安卓里常用的控件, 本文介绍一下常用用法,以及优化等方法 1、改写activity_main.xml <LinearLay

ListView 简介

ListView 是安卓里常用的控件, 本文介绍一下常用用法,以及优化等方法

1、改写activity_main.xml


<LinearLayout xmlns:Android="Http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  <ListView
    android:id="@+id/listview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
</LinearLayout>

2、新建一个javabean


package com.example.tomchen.testlistview;
public class Icon {
  private int imageId;
  private String name;
  public Icon(String name, int imageId) {
    this.name = name;
    this.imageId = imageId;
  }
  public String getName() {
    return name;
  }
  public int getImageId() {
    return imageId;
  }
}

3、新建icon_item.xml 用于 listview 每个元素的视图


<?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">
  <TextView
    android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="match_parent" />
  <ImageView
    android:id="@+id/icon"
    android:layout_width="wrap_content"
    android:layout_height="match_parent" />
</LinearLayout>

4、新建一个class IconAdapter 继承自 ArrayAdapter


package com.example.tomchen.testlistview;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
public class IconAdapter extends ArrayAdapter<Icon> {
  private int resourceId;
  public IconAdapter(Context context, int resource, List<Icon> icons) {
    super(context, resource, icons);
    this.resourceId = resource;
  }
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    Icon icon = getItem(position);
    View view;
    if (convertView == null) {
      view = LayoutInflater.from(getContext()).inflate(resourceId, null);
    } else {
      view = convertView;
    }
    ImageView image = (ImageView) view.findViewById(R.id.icon);
    image.setImageResource(icon.getImageId());
    TextView text = (TextView) view.findViewById(R.id.text);
    text.setText(icon.getName());
    return view;
  }
}

Note
这儿有了一个优化, convertView 将之前的布局进行缓存, 以便之后进行重用.

所以我们判断convertView是否为空. 空的话就使用LayoutInflater去加载布局, 否则的话就直接复用convertView

测试listview

MainActivity里面加入下面代码


package com.example.tomchen.testlistview;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
  private ListView listView;
  private List<Icon> icons = new ArrayList<Icon>();
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    listView = (ListView) findViewById(R.id.listview);
    icons.add(new Icon("Icon_01", R.drawable.ic_01));
    icons.add(new Icon("Icon_02", R.drawable.ic_02));
    icons.add(new Icon("Icon_03", R.drawable.ic_03));
    icons.add(new Icon("Icon_04", R.drawable.ic_04));
    icons.add(new Icon("Icon_05", R.drawable.ic_05));
    icons.add(new Icon("Icon_06", R.drawable.ic_06));
    icons.add(new Icon("Icon_07", R.drawable.ic_07));
    icons.add(new Icon("Icon_08", R.drawable.ic_08));
    icons.add(new Icon("Icon_09", R.drawable.ic_09));
    IconAdapter adapter = new IconAdapter(this, R.layout.icon_item, icons);
    listView.setAdapter(adapter);
  }
}

效果图如下:

您可能感兴趣的文章:解决Android ListView数据为空及加载错误的方法Android操作sqlite数据库(增、删、改、查、分页等)及ListView显示数据的方法详解Android实现树形层级ListViewAndroid编程实现动态更新ListView的方法Android listview多视图嵌套多视图Android中ListView用法实例分析Android程序开发ListView+JSON+异步网络图片加载+滚动翻页的例子(图片能缓存,图片不错乱)Android 自定义弹性ListView控件实例代码(三种方法)学习Android Material Design(RecyclerView代替ListView)浅谈Android开发中ListView控件性能的一些优化方法Android实现ListView数据动态加载的方法Android编程之listView中checkbox用法实例分析Android中ListView结合CheckBox实现数据批量选择(全选、反选、全不选)android开发之listView组件用法实例简析实例讲解Android app开发中ListView的基本使用及优化


--结束END--

本文标题: 深入浅出学习Android ListView基础

本文链接: https://lsjlt.com/news/25795.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 深入浅出学习Android ListView基础
    ListView 简介 ListView 是安卓里常用的控件, 本文介绍一下常用用法,以及优化等方法 1、改写activity_main.xml <LinearLay...
    99+
    2022-06-06
    listview 深入浅出 Android
  • opencv深入浅出了解机器学习和深度学习
    目录机器学习kNN算法图解kNN算法用kNN算法实现手写数字识别SVM算法图解SVM算法使用SVM算法识别手写数据k均值聚类算法图解k均值聚类算法使用k均值聚类算法量化图像颜色深度学...
    99+
    2024-04-02
  • 揭秘 Python 基础:深入浅出的初学者指南
    Python 是一种广受欢迎、用途广泛的高级编程语言。凭借其简单易懂的语法、丰富的库和模块,以及强大的社区支持,Python 已成为初学者和经验丰富的开发人员的理想选择。 数据类型 整数 (int):整数值,无小数部分。 浮点数 (fl...
    99+
    2024-03-13
    简介
  • 深入浅出掌握UnityShaderLab语法基础
    目录一、Shader基本介绍二、Properties(属性)1、数值类属性2、颜色和向量类属性3、纹理贴图类属性4、所有类型属性汇总三、SubShader1、SubShader的标签...
    99+
    2023-05-19
    Unity ShaderLab语法 Unity ShaderLab
  • 《深入浅出深度学习:原理剖析与pytho
    8.1 生物神经元(BN)结构 1、人脑中有100亿-1000亿个神经元,每个神经元大约会和其他1万个神经元相连 2、细胞体:神经元的主体,细胞体=细胞核+细胞质+细胞膜,存在膜电位 3、树突:从细胞体向外延伸出许多突起的神经纤维。输入...
    99+
    2023-01-31
    深入浅出 深度 原理
  • Android DataBinding 基础入门(学习记录)
    目录 一、DataBinding简介二、findViewById 和 DataBinding 原理及优缺点1. findViewById的优缺点2. DataBinding的优缺点 三、Android mvvm 之 data...
    99+
    2023-08-30
    android
  • JavaScript基础知识:深入浅出,透彻理解
    JavaScript是一门解释型脚本语言,广泛用于Web开发。它可以被嵌入在HTML代码中,并由网页浏览器解释执行。JavaScript允许您在网页上创建交互式效果,例如按钮点击、表单验证、动画等。 变量 变量是用来存储数据的容器。...
    99+
    2024-02-08
    JavaScript 基础知识 变量 数据类型 运算符 控制语句 函数
  • 深度学习tensorflow基础mnist
    软件架构 mnist数据集的识别使用了两个非常小的网络来实现,第一个是最简单的全连接网络,第二个是卷积网络,mnist数据集是入门数据集,所以不需要进行图像增强,或者用生成器读入内存...
    99+
    2024-04-02
  • Python深度学习 深度学习入门基于
    《Python深度学习》由Keras之父、现任Google人工智能研究员的弗朗索瓦•肖莱(François Chollet)执笔,详尽介绍了用Python和Keras进行深度学习的探索实践,涉及计算机视觉、自然语言处理、生成式模型等应用。书...
    99+
    2023-01-31
    深度 入门 Python
  • Python基础学习入门
    Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。在命令行窗口输入"python" 命令来查看本地是否已经安装Python以及Python的安装版本Python下载Python官网:http://www...
    99+
    2023-06-02
  • 深入浅析Android中的ListView复用机制
    这篇文章给大家介绍深入浅析Android中的ListView复用机制,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.ListView的复用机制  ListView是我们经常使用的一个控件,虽然说都会用,但是...
    99+
    2023-05-31
    android listview roi
  • JavaScript基础知识详解:深入浅出,轻松理解
    一、简介 JavaScript是一种基于对象的、解释型的、面向对象的脚本语言,由Brendan Eich于1995年在网景公司开发。它是一种高级语言,具有非常丰富的语法和函数库,可以轻松地进行Web页面的交互和动画效果的设计。JavaS...
    99+
    2024-02-08
    JavaScript 前端 脚本语言 语法 数据类型 运算符 函数 DOM
  • python深度学习tensorflow入门基础教程示例
    目录正文1、编辑器2、常量3、变量4、占位符5、图(graph)例子1:hello world例子2:加法和乘法例子3:矩阵乘法正文 TensorFlow用张量这种数据结构来表示所有...
    99+
    2024-04-02
  • Python基础学习之深浅拷贝问题及递归函数练习
    目录一、深浅拷贝问题二、递归函数练习1. 求阶乘2. 猴子吃桃问题3. 打印斐波那契数列一、深浅拷贝问题 在实际工作中,经常涉及到数据的传递,在数据传递使用过程中,可能会发生数据被修...
    99+
    2024-04-02
  • C++基础学习之输入输出流详解
    目录1. 输入输出流2. 文件输入输出3. 格式化输入输出4. 字符串输入输出5. 空格处理C++是一种广泛应用的编程语言,其输入和输出是程序所必须的基本操作之一。输入是指从外部获取...
    99+
    2023-05-17
    C++输入输出流 C++输入流 C++输出流
  • Kotlin基础学习-入门篇
    本篇文章来自郭霖大佬的第一行代码中的Kotlin教程,笔者只是在学习Kotlin过程中记录学习过程。 Kotlin系列已更新: Kotlin基础学习-入门篇 Kotlin基础学习-第二篇 Kotli...
    99+
    2023-09-07
    kotlin android
  • linux 基础学习入门 3
    linux day 3第三天内容并不明确, 自我总结内部命令 用 help command   或  man bash外部命令 用 command --help 或  command -h使用手册 man command信息页 info c...
    99+
    2023-01-31
    入门 基础 linux
  • Android深入浅出之Binder机制
    Android深入浅出之Binder机制 一 说明  Android系统最常见也是初学者最难搞明白的就是Binder了,很多很多的Service就是通过Binder机...
    99+
    2022-06-06
    binder Android
  • 深入学习Android中的Intent
    Intent提供了一种通用的消息系统,它允许在你的应用程序见传递Intent来执行动作和产生事件,使用Intent可以激活Android应用的三种类型的核心组件:活动Activ...
    99+
    2022-06-06
    intent Android
  • 学习日志-python基础01,浅谈p
    ==比较操作符:用来比较两个对象是否相等,value做为判断因素is同一性运算符:比较判断两个对象是否相同,id做为判断因素 >>> [] is [] False >>> [] == [] Tru...
    99+
    2023-01-31
    浅谈 基础 日志
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作