使用方法:

自定义一个类使其继承BaseAdapter,再在此类中实现四个方法

<1>getCount():得到数据源中元素的个数

<2>getItem(int position):根据索引位获取指定索引位得到数据值

<3>getItemAtID(int position):根据索引位返回行号

<4>getView(int position,View convertView,ViewGroup parent):每绘制一个条目就会自动调用一次当前方法

ListView的优化:就是重用条目。

注意:这里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"><ListViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/listView_names"/></LinearLayout>

后台逻辑:

package com.hsj.example.listviewwithbaseadapterdemo04;import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;public class MainActivity_bak01 extends AppCompatActivity {private ListView listView_names;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//自动修正的快捷键alt+回车this.listView_names= (ListView) this.findViewById(R.id.listView_names);this.listView_names.setAdapter(new MyAdapter());}/*** 面试题:自定义适配器需要继承哪个类,实现哪些方法,这些方法有什么用?*  答:继承BaseAdapter*  实现的方法有:*  getCount():得到数据源中元素的个数*  getItem(int position):根据索引位获取指定索引位的数据值*  getItemAtId(int position):根据索引位返回行号*  getView(int postion,View convertView,ViewGroup parent):每绘制一个条目就会自动调用一次当前方法**/private final class MyAdapter extends BaseAdapter{/*** 返回数据源中元素的个数** 当返回值为0时,不会绘制任何条目,即不会调用getView()方法* 当返回值为1时,绘制一个条目,即调用一次getView()方法* 当返回值为2时,绘制两个条目,即调用两次getView()方法* ......* 当返回值为n 时,绘制n个条目,即调用n 次getView()方法** 注意:实际绘制的条目数为=手机屏幕的高度/每一个条目的高度(如果不能整除,则取大于商的最小整数)* @return*/@Overridepublic int getCount() {System.out.println("==getCount()===");return 30;}/*** 根据指定的索引值返回指定索引处的元素值* @param position* @return*/@Overridepublic Object getItem(int position) {System.out.println("===getItem(int position="+position+")===");return null;}/*** 根据索引位返回行号,一般和position 相等* @param position* @return*/@Overridepublic long getItemId(int position) {System.out.println("==getItemId(int position="+position+")===");return position;}/*** 当每绘制一个条目时都会自动调用当前方法* @param position 当前正在绘制条目的索引值* @param convertView 缓存条目而存在的,当第一次绘制的条目上移,下面有新条目被绘制,此时convertView的值还是为null,*                    继续上移,直到第一次绘制的条目彻底移除我们的视线,此时下面应该会有新的条目出现了,此时出现的新条目就*                    不应该是重新实例化新的了,应该重用之前第一次移出去的条目,此时convertView 就不再为null了,它其实就是*                    第一次移除去的条目,重用即可提高效率** @param parent 事件源****  textView0=android.widget.TextView{53510070 V.ED.... ......ID 0,0-0,0}textView1=android.widget.TextView{53510dfc V.ED.... ......ID 0,0-0,0}textView2=android.widget.TextView{535116d0 V.ED.... ......ID 0,0-0,0}ListView的优化A:重用条目* @return*/@Overridepublic View getView(int position, View convertView, ViewGroup parent) {TextView textView=null;if(convertView==null){textView=new TextView(MainActivity_bak01.this);}else{textView= (TextView) convertView;}System.out.println("textView"+position+"="+textView);textView.setText("第"+position+"条数据!");System.out.println("=====getView(int position="+position+", View convertView="+convertView+", ViewGroup parent="+parent+")====");return textView;}}
}

android 之自定义Adapter的用法相关推荐

  1. Android入门第26天-在Android里自定义Adapter

    介绍 在上一篇"SimpleAdapter"章节中,我们看到了把:ListView和Listview内部详细页面进行分离的Adapter的设计手法. 可是,这个SimpleAdap ...

  2. [原]Android之自定义Adapter

      在ListView中经常用到适配器Adapter, android提供的三种Adapter主要有ArrayAdapter,SimpleAdapter,SimpleCursorAdapter,Arr ...

  3. android butterknife 自定义view,ButterKnife用法详解.md

    # ButterKnife用法详解 ### 如何成为T型人才,垂直在一个行业中,必须要有一整套[知识体系](https://github.com/WeiSmart/Android-Advanced-C ...

  4. android contextmenu 自定义,ContextMenu高级用法

    51CT0不支持MarkDown,原文请至:简书 关键字: ContextMenu ##背景 我们经常在列表的页面中,点击列表中的行,一般进入详情页面,长按列表中一行,会弹出一个菜单,包含了对某一行的 ...

  5. Android之自定义Adapter的ListView

    在开发中,我们经常使用到ListView这个控件. Android 的API也提供了许多创建ListView适配器的快捷方式.例如 ArrayAdapter.SimpleAdapter和SimpleC ...

  6. Android适配器以及作用,Android Studio:自定义Adapter(适配器)的一些通俗易懂的理解(以一个简单的聊天界面为例)...

    本文是博主对Adapter(适配器)的一些理解,为了加深对Adapter的理解以及记录自己的阶段学习而写,同时也适合初学者阅读,参考本条博客的逻辑进行学习. 第一  先来看看实现这个程序需要需要创建哪 ...

  7. android 单选框 icon,Android中的普通对话框、单选对话框、多选对话框、带Icon的对话框、以及自定义Adapter和自定义View对话框详解...

    标签: 对话框就是一个AlertDialog,但是一个简单的AlertDialog,我们却可以将它玩出许多花样来,下面我们就来一起总结一下AlertDialog的用法.看看各位童鞋在平时的工作中否都用 ...

  8. Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)

    Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)

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

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

最新文章

  1. addTwoNumbers
  2. 什么是体系化?为什么要体系化架构
  3. 百行代码打造一个DI容器(支持瞬时生命周期、单利生命周期、构造函数自动注入、属性自动注入、字段自动注入)...
  4. CTFshow php特性 web133
  5. cookie mapping
  6. C语言 · 8皇后问题
  7. python里面Dataset干嘛的_用 Python 对成绩分类汇总!
  8. 反地理编码 高德地图_由中文地址返回点位坐标-地理编码脚本分享
  9. 反向传播算法BP公式推导
  10. python烧录单片机_mac实现烧写51单片机
  11. 聊一聊关于“元宇宙”涉及的前端技术
  12. 如何理解客户需求,市场需求,业务需求,功能需求,产品需求,设计需求?
  13. Android-组件化开发
  14. signature=4d7e0a8216b57730ec16fe4e5ae2b93f,dragonfly对接harbor拉取镜像没有走dragonfly问题
  15. 好佳居软装十大品牌 软装拥有与众不同的体验
  16. 实战分享:闲鱼无货源项目如何从0开始做到月收入过万
  17. scrapy splash模拟点击
  18. 算法 |【实验5.3】:一元三次方程的根-连续区间的二分搜索求近似解
  19. java.lang.OutOfMemoryError: Metaspace
  20. 解码百度核心:移动的无色墙,AI的无形剑

热门文章

  1. 【S操作】我的云存储工具选择,供您参考——总结云存储云办公云笔记工具
  2. 可以用JAVA编程的物联网开发板,了解一下?
  3. 【PC工具】大神级代码注释,漂亮实用的代码注释工具代码logo工具
  4. 【整理】电容知识小结(二)
  5. java 自适应响应式 网站 源码 SSM 生成 静态化 手机 平板 PC
  6. JDK8 HashMap--removeNode()移除节点方法
  7. 2.6 datetime 模块
  8. 【编程之外】为什么我们要写技术博客?
  9. swift 学习- 14 -- 继承
  10. Gson简要使用笔记