文章目录

  • 一、案例演示
    • 1、activity.xml 整体布局页面
    • 2、item_list.xml 列表项布局
  • 二、普通适配器(SimpleAdapater)
    • 1、MainActivity.java
  • 三、自定义适配器(BaseAdapter)
    • 1、Lufei.java
    • 2、MyAdapter
    • 3、MainActivity.java

一、案例演示

为了实现面向对象,便于后期数据的添加和修改,我们使用自定义适配器来完成功能,简单适配器和自定义适配器完成项目结果相同,但是过程并不相同。

1、activity.xml 整体布局页面

整体布局线形布局,有一个listview控件用于存放数据

<LinearLayout 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"android:orientation="vertical"tools:context=".MainActivity"><ListViewandroid:id="@+id/listview"android:layout_width="match_parent"android:layout_height="match_parent"tools:listitem="@layout/support_simple_spinner_dropdown_item"/></LinearLayout>

2、item_list.xml 列表项布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><ImageViewandroid:id="@+id/iv_icon"android:layout_width="0dp"android:layout_height="100dp"android:layout_weight="1"android:gravity="center" /><TextViewandroid:id="@+id/tv_name"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="3"android:gravity="center"android:textSize="17sp"android:textColor="#ff0000" />
</LinearLayout>

二、普通适配器(SimpleAdapater)

1、MainActivity.java

        listView=findViewById(R.id.listview);//准备数据String names[]=new String[]{"路飞","娜美","山治","索隆"};int images[]=new int[]{R.drawable.lufei,R.drawable.namei,R.drawable.shanzhi,R.drawable.suolong};ArrayList list=new ArrayList();//循环来赋值数据for(int i=0;i<names.length;i++){//一个列表项组织成一个map对象HashMap map=new HashMap();map.put("images",images[i]);map.put("names",names[i]);//创建一个listlist.add(map);}//准备适配器,第二个参数list集合,其中元素map对象,第三个参数列表项布局//第四个参数map中的数组,第五个参数控件的id,键和id一一对应SimpleAdapter simpleAdapter=new SimpleAdapter(this,list,R.layout.item_list,new String[]{"images","names"},new int[]{R.id.iv_icon,R.id.tv_name});//给listview加适配器listView.setAdapter(simpleAdapter);

三、自定义适配器(BaseAdapter)

1、Lufei.java

实体类

public class Lufei {//成员变量private String name;private int image;//getset方法public String getName() {return name;}public void setName(String name) {this.name = name;}public int getImage() {return image;}public void setImage(int image) {this.image = image;}//构造方法public Lufei(String name, int image) {this.name = name;this.image = image;}
}

2、MyAdapter

自定义适配器用来存储数据

//将数据放到列表项布局中
public class MyAdapter extends BaseAdapter {//数据集合private List<Lufei> data;//列表项idprivate int layout_id;//上下文private Context context;//构造方法public MyAdapter(Context context,List<Lufei> data, int layout_id) {this.context=context;this.data = data;this.layout_id = layout_id;}//获得列表项的数量data.size()@Overridepublic int getCount() {return data.size();}//返回列表项对应的数据对象,获取position位置数据对象,集合中position位置元素@Overridepublic Object getItem(int position) {return data.get(position);}//当前元素的位置@Overridepublic long getItemId(int position) {return position;}//将一条数据放到列表项中,position位置数据@Overridepublic View getView(int position, View convertView, ViewGroup parent) {//1.数据在哪里,list集合中data中拿,拿position位置数据Lufei lufei=data.get(position);int image=lufei.getImage();String name=lufei.getName();//2.将这两个数据放到控件上//通过inflater对象将布局装为view对象,在通过view对象findViewById找到对象LayoutInflater inflater=LayoutInflater.from(context);View view=inflater.inflate(layout_id,null);ImageView imageView=view.findViewById(R.id.iv_icon);TextView textView=view.findViewById(R.id.tv_name);//3.数据放到控件上imageView.setImageResource(image);textView.setText(name);return view;}
}

3、MainActivity.java

调用适配器完成存储

        listView=findViewById(R.id.listview);ArrayList list=new ArrayList();list.add(new Lufei("路飞",R.drawable.lufei));list.add(new Lufei("娜美",R.drawable.namei));list.add(new Lufei("山治",R.drawable.shanzhi));list.add(new Lufei("索隆",R.drawable.suolong));MyAdapter myAdapter=new MyAdapter(this,list,R.layout.item_list);listView.setAdapter(myAdapter);

Android自定义适配器相关推荐

  1. android 之自定义适配器(重写的getView()方法中convertView元素的妙用)一个实例

    实现效果: 主要还是ListView的优化: 基本思路: <1>使用自定义适配器完成操作 <2>将listView进行优化处理 /*  //ListView完成了重用条目的优化 ...

  2. 带有自定义适配器示例教程的Android ListView

    In this tutorial we'll use a CustomAdapter that populates the custom rows of the Android ListView wi ...

  3. mp8播放器 android 1.4,listview(自定义适配器)与媒体播放器android

    嘿家伙我在listview(自定义适配器)面临问题 . 我已经实现了播放音频(mp3文件)的媒体播放器的listview . 我已经在我的原始文件夹中包含了mp3文件 . 我知道这是一个循环视图 . ...

  4. XamarinAndroid组件教程RecylerView自定义适配器动画

    XamarinAndroid组件教程RecylerView自定义适配器动画 如果RecyclerViewAnimators.Adapters命名空间中没有所需要的适配器动画,开发者可以自定义动画.此时 ...

  5. 【RecyclerView】 一、RecyclerView 最基本用法 ( 添加支持库 | 设置布局文件 | 自定义适配器 )

    文章目录 一.添加支持库 二.布局文件中使用 RecyclerView 三.自定义适配器 四.RecyclerView 设置流程 五.RecyclerView 完整 Java 代码示例 一.添加支持库 ...

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

    Android自定义Adapter的ListView的思路及代码,需要的朋友可以参考一下 width="650" height="200" align=&quo ...

  7. Android 自定义ScrollView ListView 体验各种纵向滑动的需求

    1.概述 群里的一个哥们有个需求是这样的:问题:主要功能就是:1.循环的一个滑动:2.每次滑动结束,保持每个Item的完整.然后我当时给他写了个Demo,所有代码都在Activity里面,后期看来其太 ...

  8. 【Android】 Android中适配器简介

    1. BaseAdapter的使用实例 BaseAdapter baseAdapter = new BaseAdapter() {@Overridepublic View getView(int po ...

  9. android 自定义flowlayout,Android 自定义ViewGroup之实现FlowLayout-标签流容器

    本篇文章讲的是Android 自定义ViewGroup之实现标签流式布局-FlowLayout,开发中我们会经常需要实现类似于热门标签等自动换行的流式布局的功能,网上也有很多这样的FlowLayout ...

最新文章

  1. 装个Redmine真是麻烦啊
  2. Python爬虫开发:url中文字符编码的两种解决方式
  3. SQLServer数据库访问帮助类
  4. 【转】怎样成为优秀的软件模型设计者(文末提供下载)
  5. 【script】python自定义时间格式的几种情况
  6. 基于JAVA+SSH+MYSQL的社区医院远程挂号系统
  7. 20 世纪 10 大算法
  8. 有关 delphi7读取 excel 报错EoleException with message '未找到提供程序,该程序可能未能正确安装' 解决方式
  9. proteus8.9安装教程
  10. 百度移动搜索冰桶算法公告
  11. 如何关闭windows安全中心(四种方法)
  12. docker获取宿主机ip
  13. 运维工程师与php,php新手入门的基础内容①
  14. mysql 主键约束起名_MySQL名称的主键约束
  15. golang中结构体转成xml格式
  16. 20核服务器项目,详细解答E5-2680v2,20核40线程服务器的具体用途怎么体现出来
  17. Allegro器件添加 no prob区域操作指导
  18. 送给刚入职 有压力和迷茫的你
  19. u盘文件突然不见了如何找回呢?
  20. 张孝祥java面试大全

热门文章

  1. display:dp:edid/e-edid/displayid
  2. 【CSS】记踩坑-图片3D旋转设置景深perspective
  3. 生日悖论 Birthday Paradox 至少有两人同一天生日概率
  4. 李彦宏说百度吹的牛都实现了,还扔出来一个ACE计划
  5. velocity单双引号区别及转义方法
  6. pytorch神经网络实现
  7. linux之ssh命令详解
  8. Java+Jsp+MySql实现图书管理系统_图书管理系统代码
  9. python生成的word表格设置内容居中
  10. IOS OpenGL ES GPUImage 图像Lanczos重取样模糊效果 GPUImageLanczosResamplingFilter