Android 自定义ListView

Android自定义ListView实现侧滑子菜单 惯例,先放效果图,DEMO在最后 想当年博主刚接触Android的时候,看到这个效果心中只有膜拜啊,如果慢慢的自己水平也上来了,就把当年的一个想法给圆满了吧。 好了,废话不多说,先总结总结这个效果: 首先是需要自定义ListView,这点是必须的,然后在ListView的onTouchEvent方法中对事件进行处理普通的Item的话,是没办法实现这样侧滑的,即使你塞一 阅读详情
本文讲实现一个自定义列表的Android程序,程序将实现一个使用自定义的适配器(Adapter)绑定
数据,通过contextView.setTag绑定数据有按钮的ListView。
系统显示列表(ListView)时,首先会实例化一个适配器,本文将实例化一个自定义的适配器。实现
自定义适配器,必须手动映射数据,这时就需要重写getView()方法,系统在绘制列表的每一行的时候
将调用此方法。
ListView在开始绘制的时候,系统自动调用getCount()函数,根据函数返回值得到ListView的长度,
然后根据这个长度,调用getView()逐一画出每一行。
具体使用方法可以参考下面代码,只需记住Android自定义ListView三步骤:
第一步:准备主布局文件、组件布局文件等
第二步:获取并整理数据
第三部:绑定数据,这里我们是通过自己编写Adapter类来完成的
1.首先新建一个list.XML
Java代码 复制代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical" >   
  6.     <LinearLayout android:layout_width="match_parent"  
  7.         android:layout_height="match_parent"  
  8.         android:orientation="horizontal" android:background="#f1e4f1">   
  9.         <ImageView    
  10.             android:id="@+id/image"  
  11.             android:layout_width="wrap_content"  
  12.             android:layout_height="wrap_content"/>   
  13.         <TextView    
  14.             android:id="@+id/title"  
  15.             android:layout_width="wrap_content"  
  16.             android:layout_height="wrap_content"  
  17.             android:textColor="#666872"/>   
  18.         <Button    
  19.             android:id="@+id/view"  
  20.             android:layout_width="wrap_content"  
  21.             android:layout_height="wrap_content"  
  22.             android:text="详细"/>   
  23.     </LinearLayout>   
  24.     <TextView    
  25.         android:id="@+id/info"  
  26.         android:layout_width="wrap_content"  
  27.         android:layout_height="wrap_content"  
  28.         android:textColor="#666872"/>   
  29. </LinearLayout>  
2、新建一个适配器类MyAdspter.java
Java代码 复制代码  收藏代码
  1. public class MyAdspter extends BaseAdapter {   
  2.   
  3.     private List<Map<String, Object>> data;   
  4.     private LayoutInflater layoutInflater;   
  5.     private Context context;   
  6.     public MyAdspter(Context context,List<Map<String, Object>> data){   
  7.         this.context=context;   
  8.         this.data=data;   
  9.         this.layoutInflater=LayoutInflater.from(context);   
  10.     }   
  11.     /**  
  12.      * 组件集合,对应list.xml中的控件  
  13.      * @author Administrator  
  14.      */  
  15.     public final class Zujian{   
  16.         public ImageView image;   
  17.         public TextView title;   
  18.         public Button view;   
  19.         public TextView info;   
  20.     }   
  21.     @Override  
  22.     public int getCount() {   
  23.         return data.size();   
  24.     }   
  25.     /**  
  26.      * 获得某一位置的数据  
  27.      */  
  28.     @Override  
  29.     public Object getItem(int position) {   
  30.         return data.get(position);   
  31.     }   
  32.     /**  
  33.      * 获得唯一标识  
  34.      */  
  35.     @Override  
  36.     public long getItemId(int position) {   
  37.         return position;   
  38.     }   
  39.   
  40.     @Override  
  41.     public View getView(int position, View convertView, ViewGroup parent) {   
  42.         Zujian zujian=null;   
  43.         if(convertView==null){   
  44.             zujian=new Zujian();   
  45.             //获得组件,实例化组件   
  46.             convertView=layoutInflater.inflate(R.layout.list, null);   
  47.             zujian.image=(ImageView)convertView.findViewById(R.id.image);   
  48.             zujian.title=(TextView)convertView.findViewById(R.id.title);   
  49.             zujian.view=(Button)convertView.findViewById(R.id.view);   
  50.             zujian.info=(TextView)convertView.findViewById(R.id.info);   
  51.             convertView.setTag(zujian);   
  52.         }else{   
  53.             zujian=(Zujian)convertView.getTag();   
  54.         }   
  55.         //绑定数据   
  56.         zujian.image.setBackgroundResource((Integer)data.get(position).get("image"));   
  57.         zujian.title.setText((String)data.get(position).get("title"));   
  58.         zujian.info.setText((String)data.get(position).get("info"));   
  59.         return convertView;   
  60.     }   
  61.   
  62. }  
关于上面LayoutInflater的使用:在实际开发种LayoutInflater这个类还是非常有用的。它的作用类似
于 findViewById(),不同点是LayoutInflater是用来找layout下xml布局文件,并且会实例化!。
getView()的三个参数:position表示将显示的是第几行,covertView是从布局文件中inflate来的布
局。我们用LayoutInflater的方法将定义好的list.xml文件提取成View实例用来显示。然后将xml文件
中的各个组件实例化,这样便可以将数据对应到各个组件上了。但是按钮为了响应点击事件,需要为
它添加点击监听器,这样就能捕获点击事件。
3、activity_main.xml中添加ListView控件
Java代码 复制代码  收藏代码
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:paddingBottom="@dimen/activity_vertical_margin"  
  6.     android:paddingLeft="@dimen/activity_horizontal_margin"  
  7.     android:paddingRight="@dimen/activity_horizontal_margin"  
  8.     android:paddingTop="@dimen/activity_vertical_margin"  
  9.     tools:context=".MainActivity" >   
  10.     <ListView    
  11.         android:id="@+id/list"  
  12.         android:layout_width="fill_parent"  
  13.         android:layout_height="fill_parent"></ListView>   
  14. </RelativeLayout>  
4、在activity中调用ListView
Java代码 复制代码  收藏代码
  1. public class MainActivity extends Activity {   
  2.   
  3.     private ListView listView=null;    
  4.     @Override  
  5.     protected void onCreate(Bundle savedInstanceState) {   
  6.         super.onCreate(savedInstanceState);   
  7.         setContentView(R.layout.activity_main);   
  8.         listView=(ListView)findViewById(R.id.list);   
  9.         List<Map<String, Object>> list=getData();   
  10.         listView.setAdapter(new MyAdspter(this, list));   
  11.     }   
  12.     @Override  
  13.     public boolean onCreateOptionsMenu(Menu menu) {   
  14.         getMenuInflater().inflate(R.menu.main, menu);   
  15.         return true;   
  16.     }   
  17.   
  18.     public List<Map<String, Object>> getData(){   
  19.         List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();   
  20.         for (int i = 0; i < 10; i++) {   
  21.             Map<String, Object> map=new HashMap<String, Object>();   
  22.             map.put("image", R.drawable.ic_launcher);   
  23.             map.put("title", "这是一个标题"+i);   
  24.             map.put("info", "这是一个详细信息"+i);   
  25.             list.add(map);   
  26.         }   
  27.         return list;   
  28.     }   
  29. }  

  • 大小: 216.9 KB
安卓自定义ListView完整实例代码 本文还有配套的精品资源,点击获取 简介:本文档提供了关于在Android应用中实现自定义ListView的实例代码。首先介绍了ListView的基本用法,然后详细说明了自定义适配器、布局、数据绑定以及交互和动画的实现,最后探讨了效率优化和数据加载。通过学习这些知识点,开发者可以深入理解并实践自定义ListView的设计,以提高用户体验。 1. Android Li... 阅读详情

相关推荐

Android自定义ListView选中行样式实战指南

在Android开发中,ListView是一个广泛使用的组件,它可以有效地展示大量数据。要向ListView中填充数据,就必须使用Adapter来适配数据与视图。BaseAdapter是一个抽象类,它提供了完整的Adapter实现,供开发者继承并实现具体的方法。继承BaseAdapter的原因在于其提供了四个核心方法:getCount(): 返回数据的总数,用于确定ListView的行数。: 返回位置对应的项目数据。: 返回位置对应的项目唯一标识符。

weixin_32687875的博客 1035

Android之ListView列表视图和界面跳转实现

本篇文章通过一个例子实现ListView列表视图

冰点蓝欣的专栏 1万+

unity游戏开发日志(一)将mmd模型导入unity,并解决材质丢失的问题

unity音乐游戏开发,导入角色模型并解决材质问题

yizhigou1的博客 1762

android自定义ListView与Adapter

练习一个简单的多元素ListView

robinfoxnan的专栏 1270

【COMSOL】将一个面上数据导出CSV或txt格式的方法

在COMSOL中参数化扫描后,把一个面上或体里的数据按照CSV或TXT格式导出的方法。

dave496206的博客 2991

5分钟搞定PaddleOCR PP-OCRv5环境搭建:从安装到第一个识别Demo

本文提供了一份详细的PaddleOCR PP-OCRv5环境搭建与快速入门指南。通过清晰的步骤,指导读者在5分钟内完成从创建Python虚拟环境、安装PaddlePaddle框架和PaddleOCR库,到编写并运行第一个OCR识别Demo的全过程,帮助开发者快速体验最新的PP-OCRv5模型的文字识别能力。

sprite的博客 1270

Android自定义ListView

系统显示列表(ListView)时,首先会实例化一个适配器,本文将实例化一个自定义的适配器。实现自定义适配器,必须手动映射数据,这时就需要重写getView()方法,系统在绘制列表的每一行的时候将调用此方法。ListView在开始绘制的时候,系统自动调用getCount()函数,根据函数返回值得到ListView的长度,然后根据这个长度,调用getView()逐一画出每一行。 具体步骤如下:

jiaoyingcsdn的博客 332

SAP FICO实操:如何修改已发生业务数据的成本中心公司代码(附RKACOR06程序运行指南)

本文详细解析了SAP FICO系统中使用RKACOR06程序修改已发生业务数据的成本中心和公司代码的实操方法。通过实战案例分享,提供从前期准备到后期验证的全流程指南,帮助企业应对组织架构重组或财务核算体系调整时的数据迁移挑战,特别适用于跨公司代码的成本中心划转场景。

weixin_27303545的博客 191

java 安卓 listview_Android 自定义ListView

本文讲实现一个自定义列表的Android程序,程序将实现一个使用自定义的适配器(Adapter)绑定数据,通过contextView.setTag绑定数据有按钮的ListView。系统显示列表(ListView)时,首先会实例化一个适配器,本文将实例化一个自定义的适配器。实现自定义适配器,必须手动映射数据,这时就需要重写getView()方法,系统在绘制列表的每一行的时候将调用此方法。ListVi...

weixin_35410816的博客 586

把数字化转型真正落到组织里:读懂 SAP 的 OCM 六维框架

摘要: SAP的变革管理框架(OCM)强调数字化转型不仅是技术任务,更需关注组织与人的适应性。OCM包含六大维度:变革战略(明确方向与风险)、变革领导力(统一关键管理者行动)、变革沟通(分层传递信息)、变革实现(细化岗位级影响)、变革赋能(按角色设计培训)和变革有效性(持续评估)。该框架贯穿项目全周期,尤其在云项目中,需从早期规划变革策略,避免后期高代价调整。OCM的核心是将系统设计转化为组织语言,确保业务真正采纳新方式运作。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1434

一篇文章足够你学习Bluez,提供史上最全的Bluez教程,让你告别Bluez从入门到放弃

Bluez是真的难,说“入门到放弃”真的毫不夸张,Bluez的学习曲线陡峭,要求对Linux 系统/驱动概念、D-Bus 通信和蓝牙协议都有要求,加上网络上其实没有一个完整的介绍Bluez系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员,都有不小的难度。

朝气蓬勃 2540

java 安卓 listview_自定义android控件——TextView 并添加到ListView中

①在values文件夹下定义TextView的颜色和边距规则:颜色规则:notepadcolors.xml#AAFFFF99#FF0000FF#90FF0000#AA0000FF边距规则:notepaddimens.xml30dp②创建一个扩展原TextView的新类,并重写onDraw方法来修改视图的外观packagecom.yinger;importandroid.content.Contex...

weixin_30855745的博客 841

2024年ERP管理系统职业技能大赛软件测试赛项-测试报告

【说明本次测试的最终测试结果总结、测试过程中遇到的重要问题以及如何解决、被测系统的质量结论、个人的收获以及团队的得失等】【说明编写本测试报告的目的和实际读者】【说明本次测试实际人员安排及主要职责】【说明本次测试使用的测试用例设计方法】【说明本次测试使用的测试方法】【针对本次测试进行Bug汇总】【针对本次测试进行用例汇总】【说明本项目的背景情况】【说明本次测试的实际。

Code is fun. 789

Android自定义ListView示例,以创建不可滚动的ListView

In this tutorial we’ll override the ListView class to suit it according to our requirements in the android application. 在本教程中,我们将根据Android应用程序中的要求覆盖ListView类以使其适合您。 Android非滚动ListView要求 (Android Non...

从零开始的教程世界 1506

《C++等级认证CCF-GESP真题解析》专栏总目录

❤️ 专栏名称:《C++等级认证CCF-GESP真题解析》🌸 专栏介绍:中国计算机学会GESP《CCF编程能力等级认证》C++编程(1~8级)历届真题解析。🚀 订阅专栏:订阅后可阅读专栏内所有真题解析,真题持续更新中,欢迎订阅!

人生就是一个不断学习的过程 6292

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

自定义listview android,自定义ListView

今天碰到ListView的问题,为了加深记忆,就写到博客中来。一。新建一个关于ListView的布局文件(list.xml)android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" >android:id="@+id/listView"androi...

weixin_28730037的博客 297

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Android ListView自定义布局

本人,刚刚入行android,今天碰到ListView自定义布局的问题,参考了些网上资料,终于实现了这一功能,别喷我,小弟是新手 我认为最主要的是适配器的编写,在这里我们先写个LIstview的布局文件listview.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" androi

玩绅沉 1056

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Android中自定义ListView

用LinearLayout自定义ListView组件。

为梦想而努力(马英才) 3万+

android 自定义listview

android 自定义listview MainActivity.java public class MainActivity extends AppCompatActivity { private ListView listView; private ItemAdapter itemAdapter;//自定义的适配器 private List&lt;Item&gt; ar...

wodecc_u的博客 364

android listview点击事件失效,Android自定义ListView单击事件失效的解决方法

Android自定义ListView单击事件失效的解决方法发布时间:2020-09-02 20:41:29来源:脚本之家阅读:114作者:_York因为自带的listView不能满足项目需求,通过实现自己的Adapter去继承ArrayAdapter 来实现自定义ListView的Item项目。出现点击ListView的每一项都不会执行setOnItemClickListener 里面的onIte...

weixin_33899835的博客 728

安卓ListView自定义Adapter

list.xml &lt;ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="wrap_content" /&gt; item.xml &lt;TextView andro...

chent86的博客 2679

白话Android自定义ListView实现

Android ListView大概算是Android中最常用也是最难用的一个控件,老实说之前这个控件的用法着实让我别扭了一阵子,要知道看程序能懂,但离了书之后发现就是写不出来的感觉真是相当失落。好在,现在终于能够自己写出来的,所以在这里记录一下我写自定义ListView的过程,提供一个思路,希望能够帮助到一些初学者。 真问主要分三个部分来介绍自定义ListView: 基本的ListView...

Blog of Chauncy Wang 1万+

Android中的自定义ListView

Android中ListView是我们进行安卓APP开发中最常用和最难用的控件,因此我们必须熟练掌握,今天我就来给大家介绍一下它的高级用法。效果如下 1.首先介绍ListView的工作原理,看一下它的简单用法, 首先需要一个String数组例如: private String[] data = {"Apple","Orange"}; 然而数组中的数据是无法直接传递给ListView的...

AlwaysSun的博客 1024

android 自定义listview控件,一个简单又完整的自定义ListView

ListView一、简单列表1.在activity_main中添加控件ListViewxmlns:tools="http://schemas.android.com/tools"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:o...

weixin_35916466的博客 2071
上一篇: android书架效果 .
下一篇: Android学习笔记(19)————实现一个记住密码的Android登陆界面 .
mypanlong
博客等级 码龄19年 194粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值