安卓ListView自定义Adapter

Android ListView自定义Adapter实战:复用、内存与动态刷新 ListView是Android早期核心列表控件,其Adapter机制虽被RecyclerView取代,但在老旧系统兼容、低资源设备及存量政务/医疗类App中仍具不可替代性。理解Adapter底层原理——尤其是getView复用逻辑、ViewHolder生命周期管理、notifyDataSetChanged线程安全与数据绑定解耦——是保障列表性能与稳定性的技术基石。本文聚焦Custom Adapter工程实践,深入剖析convertView精准复用、静态ViewHolder防内存泄漏、单Item局部刷新等关 阅读详情

list.xml

    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

item.xml

    <TextView
        android:id="@+id/name"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        app:layout_constraintRight_toLeftOf="@+id/price"/>
    <TextView
        android:id="@+id/price"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        app:layout_constraintLeft_toRightOf="@+id/name"/>

Book.java

public class Book {
    private String bookName;
    private String bookPrice;
    public Book(String bookName, String bookPrice) {
        this.bookName = bookName;
        this.bookPrice = bookPrice;
    }
    public String getBookName() {
        return bookName;
    }

    public String getBookPrice() {
        return bookPrice;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public void setBookPrice(String bookPrice) {
        this.bookPrice = bookPrice;
    }
}

list.java

        List<Book> data = new ArrayList<>();
        for(int i = 0; i < 3; i++) {
            Book b = new Book("book","100");
            data.add(b);
        }

        ListView listview = (ListView) findViewById(R.id.listview);
        MyListViewAdapter t = new MyListViewAdapter(this, data);
        listview.setAdapter(t);
MyListViewAdapter.java
public class MyListViewAdapter extends BaseAdapter {
    private List<Book> list;
    LayoutInflater inflater;
    public MyListViewAdapter(Context context, List<Book> list) {
        this.list = list;
        inflater = LayoutInflater.from(context);
    }
    @Override
    public int getCount() {
        if (list == null) {
            return 0;
        }
        return list.size();
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public Object getItem(int i) {
        if (list == null) {
            return null;
        }
        return list.get(i);
    }

    @Override
    public View getView(int i, View convertView, ViewGroup viewGroup) {
        ViewHolder viewHolder;
        // 当view为空时才加载布局,否则,直接修改内容
        if (convertView == null) {
            // 通过inflate的方法加载布局,context需要在使用这个Adapter的Activity中传入。
            convertView = inflater.inflate(R.layout.item, null);
            viewHolder = new ViewHolder();
            viewHolder.bookName = (TextView) convertView.findViewById(R.id.name);
            viewHolder.bookPrice = (TextView) convertView.findViewById(R.id.price);
            convertView.setTag(viewHolder); // 用setTag方法将处理好的viewHolder放入view中
        } else { // 否则,让convertView等于view,然后从中取出ViewHolder即可
            viewHolder = (ViewHolder) convertView.getTag();
        }
        // 从viewHolder中取出对应的对象,然后赋值给他们
        viewHolder.bookName.setText(list.get(i).getBookName());
        viewHolder.bookPrice.setText(list.get(i).getBookPrice());
        // 将这个处理好的view返回
        return convertView;
    }
    private class ViewHolder {
        public TextView bookName;
        public TextView bookPrice;
    }
}

 

Android之ListView与自定义adapter简单实例 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_par 阅读详情

相关推荐

Ubuntu24.04/20.04设置网络共享文件夹

Ubuntu20.04利用向日葵远程控制时,不能传输文件。使用linux版本QQ来传输是可以的,不过linuxqq功能真的很弱。因此,打算在Ubuntu系统中建立一个共享文件夹,可在局域网中访问。 1、新建共享文件夹 获取root权限,或者登陆root账户。可在/home文件夹(或其它文件夹)下新建一个文件夹,如share。 右击文件夹,选择“本地网络共享”菜单。按下图设置。 点击确定。如果系统已经安装了samba服务器,就可以进入第3步。如果没有,会提示安装,按提示安装,可能会出错,可进.

willhu2008的专栏 2万+

listview&adapter实现列表功能

android中经常用到的是ListView,它是一个容器,以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。需要我们做的是在另外的xml页面中设计好要显示的列表样式,在ListView的java类中加载之后即可!本文详细介绍了listview和adapter的使用,详细的代码清单,分项给everybody

一杯咖啡,一行代码,是一种境界,也是一种追求! 1368

摄像机实时接入分析平台视频分析网关AI智能分析智慧营业厅方案

通过智能化的改造,可以提高营业厅的运营效率,降低运营成本,同时提升客户体验和安全保障。

EasyDarwin开源社区技术博客 703

Android之Adapter用法总结

1.概念         Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView)等地方都需要用到Adapter。如下图直观的表达了Data、Adapter、View三者的关系: Android中所有的Adapter一览:         由图可以看到在Android中与Adapter有关的

出头天 3443

基准电压 + 运放 + 低边MOS恒流源控制原理

因为恒流源强制 Iout不变,而 Vin​ 增加时,负载压降 Iout⋅Rload不变,多余的电压只能由MOS管的 VDS承担,因此 VDS必然增加。在饱和区,MOS 管的 ID 仅由 VGS决定,与 VDS 无关,这样,负载变化时,VDS可自由调整以维持 Iout恒定。当 Vin​ 小到无法满足 VDS>VGS−Vth时,MOS管进入线性区,Iout 会随 Vin​ 下降而减小,恒流失效。由于 Vref和 Rsense未变,Iout无需调整,运放无需动作,OUT保持不变,Iout恒定。

weixin_50643237的博客 2656

processing与arduino互动编程

Arduino开发板对AVR单片机二次编译封装,无需考虑单片机编程寄存器、地址指针等复杂细节processing借助arduino读取各种传感器的数值,控制各种机电装置。

weixin_45679408的博客 824

【Android从零单排系列四十七】《Android中自定义adapter的实现方法》

小伙伴们,在前面的文章中,我们谈到了Android开发中的自定义view的基本概念及方法等,本文我们实际举例自定义一个adapter。在 Android 开发中,适配器(Adapter)是连接数据源和 UI 控件之间的桥梁。它将数据转化为可供 UI 控件展示的格式,并负责管理数据与界面之间的交互。适配器通常用于列表、网格及其他可滚动视图的数据绑定。适配器的主要作用包括:数据转换:适配器将原始的数据源转换为可以在 UI 控件中展示的数据项。

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 2479

学生党投稿Applied Soft Computing:从导师账号登录到通讯作者设置的全流程解惑

本文详细解析了学生投稿Applied Soft Computing期刊的全流程,重点介绍了导师账号登录、通讯作者设置、作者排序调整以及开放获取费用等关键环节的避坑技巧。针对LaTeX稿件处理和财务选项选择提供了实用建议,帮助学生顺利完成SCI期刊投稿。

weixin_30352191的博客 211

[Android studio] 第17节 Adapter适配器

一、Adapter是什么?在 Android 开发中,适配器(Adapter)是一个关键的组件,用于将数据源绑定到界面上的视图组件,例如 ListView、RecyclerView、Spinner 等。适配器的主要作用是根据数据源的内容,创建每个列表项或视图项,并将其显示在相应的容器中。

AA2534193348的博客 2247

绕过限制?实测修改UA在PC端运行微信小程序的可行性及风险

本文探讨了通过修改User-Agent(UA)在PC端运行微信小程序的技术可行性及风险。分析了小程序设备限制的技术原理,包括`wx.getSystemInfo`API和UA检测机制,并提供了多种修改方案及其局限性。同时强调了潜在的安全和法律风险,推荐使用官方模拟器或安卓模拟器等更安全的替代方案。

weixin_30879169的博客 364

OSCP-1-3-natraj(本地文件包含、日志中毒、apache2配置漏洞、nmap提权)

像往常一样,我们将使用“Netdiscover”工具识别主机的 IP。所以,让我们首先用 nmap 列出所有 TCP 端口。我们从访问web服务(80端口)开始,在那里我们找到了几张关于Natraj的图片和信息,我们将查看源代码和robots.txt,似乎没有什么有用的。(或至少,目前)。因此,让我们继续进行。在 Dirb 及其默认字典的帮助下,我们找到了一个名为“”的目录。我们进入并列出一个名为“”的文件:如果我们执行它,我们会看到它什么也不做。我们可能需要添加其他内容。

墨痕诉清风的博客 529

【Android】ListView自定义Adapter

文章目录案例:商品列表一、创建列表单元模板二、使用bean封装单个商品三、自定义Adapter适配器四、启用Activity五、修改主程序六、运行 在开发中,我们经常使用到ListView这个控件。 Android 的API也提供了许多创建ListView适配器的快捷方式。例如 ArrayAdapter、SimpleAdapter和SimpleCursorAdapter 等。但你是否发现,如果采用这些系统自带的适配器,对于事件的响应只能局限在一个行单位。假设一行里面有一个按钮和一个图片控件,它们之间的响.

懂得一千零一种,赋予你失败的方法! 2250

技术面 - 手撕算法题整理

这篇博客整理了华为OD面试中涉及的算法题,包括LeetCode热门题目、OD原题和需要手写的算法,如二分查找、冒泡排序等。建议优先刷"hot100"的LeetCode题目,全刷OD原题,以及掌握手撕算法的基本原理。

m0_73659489的博客 1025

Android自定义Adapter的ListView的思路及代码

Android自定义Adapter的ListView的思路及代码,需要的朋友可以参考一下  在开发中,我们经常使用到ListView这个控件。Android的API也提供了许多创建ListView适配器的快捷方式。例如ArrayAdapter、SimpleAdapter和SimpleCursorAdapter等。但你是否发现,如果采用这些系统自带的适配器,对于事件的响应只能局

xyjikl 484

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

android自定义ListView与Adapter

练习一个简单的多元素ListView

robinfoxnan的专栏 1270

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Android 自定义Adapter动态更新ListView视图

首先将自定义的适配器的代码列下,主要是构造函数中List list 数据变化了,怎么更新UI的问题 public class SaveShowAdpter extends BaseAdapter {  private Context context = null;  private LayoutInflater listContainer = null;  private List lis

爱吃鱼的钩 3091

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android 自定义Adapter以实现自定义填充ListView的Item

1>实体类---即ListView中各个Item中填充的内容 package com.demo.cxc.compoundview.com.demo.cxc.entity; import java.text.SimpleDateFormat; import java.util.Date; /** * Created by CXC on 15/4/14. */ public class To

cxcbupt 3884

Android ListView 自定义adapter好友列表

Android ListView 自定义adapter好友列表

qq_45688164的博客 930

android中自定义adapter,Android 自定义Adapter以实现自定义填充ListView的Item

1>实体类---即ListView中各个Item中填充的内容package com.demo.cxc.compoundview.com.demo.cxc.entity;import java.text.SimpleDateFormat;import java.util.Date;/*** Created by CXC on 15/4/14.*/public class ToDoItem {p...

weixin_31601663的博客 406

【Android】ListView的用法、自定义adapter(性能优化)

一、预览效果 二、layout布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" andro...

冰冷的希望的博客 862

Android Studio中ListView通过自定义Adapter显示数据3-1

在Android Studio中ListView的使用方法2-2_棉猴的博客-优快云博客 中提到,使用ArrayAdapter类可以将数据与适配器进行绑定,与该适配器绑定的还有一个名为“android.R.layout.simple_list_item_1”的布局文件,该布局文件决定了ListView的每一项中只有一个文本框。而对于如图1所示的ListView的每一项中有多个控件的情况,需要通过自定义Adapter类来实现。 图1 ListView项中包含多个控件 从图1中可以看出,ListVi

hou09tian的博客 4184

android ListView布局之三(使用自定义的Adapter绑定数据,通过contextView.setTag绑定数据)有按钮的ListView

最终结果图:代码结构示意图vlist2.xml代码:

梦中一夜下江南 2万+

Android中自定义Adapter和ListView

    SDK中自带的诸如SimpleCurorAdapter可能不符合开发者的项目需求,因而需要对视图层及逻辑层进行重写,也就是ListVew和Adapter。    先上例子,之后进行解释,并对开发中遇到的问题进行汇总。    XML(res/layout/list_item.xml)

来啊,相互伤害啊 1307

【Android】使用自定义Adapter优化ListView、修改数据及控件内部布局

之前使用 SimpleAdapter去显示ListView,当item很多时,系统会对每一条进行创建,但显示的却每次只有几条,有很多无用的item占据了内存,使用继承于BaseAdapter的adapter,通过重写各种方法,可以很好的帮助我们进行List显示,同时,BaseAdapter也支持GridView和Spinner,可对其他内容起到作用。 同样,对于数据存储存储在private Arr

年轻的学徒 2044

【转】Android自定义Adapter的ListView的思路及代码

原文网址:http://www.jb51.net/article/37236.htm Android自定义Adapter的ListView的思路及代码,需要的朋友可以参考一下    在开发中,我们经常使用到ListView这个控件。Android的API也提供了许多创建ListView适配器的快捷方式。例如ArrayAdapter、SimpleAdapter和SimpleCurs...

weixin_33963189的博客 105

Android之自定义Adapter的ListView

【转】Android之自定义Adapter的ListView    在开发中,我们经常使用到ListView这个控件。Android的API也提供了许多创建ListView适配器的快捷方式。例如ArrayAdapter、SimpleAdapter和SimpleCursorAdapter等。但你是否发现,如果采用这些系统自带的适配器,对于事件的响应只能局限在一个行单位。假设一行里面有一个按钮和一个

zypuestc的专栏 505
上一篇: 队列的一些算法题
下一篇: 安卓recycleview
chent86
博客等级 码龄10年 36粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值