返回顶部
首页 > 资讯 > 移动开发 >Android Adapter的几个常用方法
  • 407
分享到

Android Adapter的几个常用方法

方法adapterAndroid 2022-06-06 07:06:20 407人浏览 安东尼
摘要

Android Adapter的几个常用方法分享给大家,具体内容如下 1  ListView是在什么时候设置对Adapter的数据监听的?  在setAd

Android Adapter的几个常用方法分享给大家,具体内容如下

1  ListView是在什么时候设置对Adapter的数据监听的? 

在setAdapter(ListAdapter adapter)中,会先取消ListView中原来的mAdapter中的数据监听(mAdapter.unreGISterDataSetObserver(mDataSetObserver);),然后再设置对新设置的adapter的数据监听。 

2  getView(int position, View convertView, ViewGroup parent) 

我们都知道mAdapter的getView方法很重要,那么该方法在ListView是怎么被利用的呢? 在ListView的源码中没有发现getView方法的调用,于是我们去ListView的父类AbsListView。在AbsListView中的obtainView中调用了getView,其主要代码逻辑部分为:


View obtainView(int position, boolean[] isScrap) {
    isScrap[0] = false;
    View scrapView;
    //从回收器中获取view
    scrapView = mRecycler.getScrapView(position);
    View child;
    if (scrapView != null) {
      ...
      //若不为空,则传入convertView,这样的话重用了view,同时更新了数据
      child = mAdapter.getView(position, scrapView, this);
      ...
    } else {
      //若为空,则在getView中重新创建HolderView,且填入数据
      child = mAdapter.getView(position, null, this);
      ...
    }
    return child;
  }

而obtainView又会在ListView的measure以及生成整个ListView等中用到。 

对于重写getView方法最终要的应该就是要记得convertView的重用了,没有重用几乎都会造成内存卸了。 

3  getCount() 

Adapter的getCount()用来干啥?  在ListView中,在onMeasure以及触控分发响应等过程中都会用到Adapter的getCount()函数。毫无疑问的是:它应该返回底层数据的数据个数。 

4  getItem(int position) 

getItem()在AdapterView中被调用,然后供用户调用:从这两个函数的描述我们可以看出,我们应该在Adapter的getItem()方法中返回position对应的数据,但是不是说一定要返回用于在Item的View上展示的数据,这个还是看需求,虽然可能大部分情况都是返回View中展示的数据。 


  
  public Object getItemAtPosition(int position) {
    T adapter = getAdapter();
    return (adapter == null || position < 0) ? null : adapter.getItem(position);
  }
  
  public Object getSelectedItem() {
    T adapter = getAdapter();
    int selection = getSelectedItemPosition();
    if (adapter != null && adapter.getCount() > 0 && selection >= 0) {
      return adapter.getItem(selection);
    } else {
      return null;
    }
  }

纵观整个结构,可以说存在这样的三层:dataLists(原底层数据)--Adapter--AdapterView,有了getItem()方法的存在,我们可以直接利用Adapter来获取数据,而不需要获取底层dataLists的引用;有了getItemAtPosition()方法的存在,我们可以直接利用AdapterView 获取底层数据,而不需要获取其Adapter的引用。这样的话,对于编程的简便性以及解耦性都好很多。

5    getItemId(int position) 

在AdapterView中发现它的一些调用,


public long getItemIdAtPosition(int position) {
    T adapter = getAdapter();
    return (adapter == null || position < 0) ? INVALID_ROW_ID : adapter.getItemId(position);
  }
  private void fireOnSelected() {
    if (mOnItemSelectedListener == null)
      return;
    int selection = this.getSelectedItemPosition();
    if (selection >= 0) {
      View v = getSelectedView();
      //这里调用的getItemId得到的返回值与selection都属于同一个item的特征,其意义也就在于在选择接口的onItemSelected方法中可
      //以直接拿到该item的id,而不需要通过获取adapter来间接实现
      mOnItemSelectedListener.onItemSelected(this, v, selection,
          getAdapter().getItemId(selection));
    } else {
      mOnItemSelectedListener.onNothingSelected(this);
    }
  }
  int findSyncPosition() {
    ...
      rowId = adapter.getItemId(seed);
      if (rowId == idToMatch) { //从这里来看,getItemId似乎应该对于不同的item返回不同的值,保持唯一性
        // Found it!
        return seed;
      }
    ...
  }

与上面分析的getItem()方法一样,getItemId()和getItemIdAtPosition()都提供了编程上面的便利。但是目前来看,由于对id没啥需求,所以大部分在重写getItemId方法时都是直接返回的position值,这样做也是对的,虽然从数据获取上没啥意义(我给你一个position,你原封不动的返回给我,啥意思)。但是我想说明的是,不要被这个做法所限制,而以为ItemId就是item在数据中的position。其实若有需求,可以利用getItemId()方法返回一些其他的值,比如每个item数据在数据库中id值,或者每个人的身份证号等。

您可能感兴趣的文章:android开发中ListView与Adapter使用要点介绍详解Android App中ViewPager使用PagerAdapter的方法Android中 自定义数据绑定适配器BaseAdapter的方法Android自定义Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)Android listview与adapter详解及实例代码Android开发中ListView自定义adapter的封装Android中的Adapter简单介绍Android中GridView和ArrayAdapter用法实例分析Kotlin编写Android适配器AdapterAndroid ListView适配器(Adapter)优化方法详解Android开发中总结的Adapter工具类【附完整源码下载】


--结束END--

本文标题: Android Adapter的几个常用方法

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

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

猜你喜欢
  • Android Adapter的几个常用方法
    Android Adapter的几个常用方法分享给大家,具体内容如下 1  ListView是在什么时候设置对Adapter的数据监听的?  在setAd...
    99+
    2022-06-06
    方法 adapter Android
  • JavaScript数组 几个常用方法总结
    目录1、前言2、filter()3、map()4、sort()5、reduce()6、forEach()7、方法列表8、本文参考1、前言 数组方法有太多了,本文记录一些本人容易记错的...
    99+
    2024-04-02
  • CSS中的几个常用伪元素的使用方法
    本篇内容介绍了“CSS中的几个常用伪元素的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!对于一个很...
    99+
    2024-04-02
  • 浅析Android之Adapter用法总结
    1.概念  Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView)等...
    99+
    2022-06-06
    adapter Android
  • 我常用的几个第三方 Python 库
    作者:赖勇浩(http://blog.csdn.net/lanphaday) 今天公司停电,没上班。跑上来更新个博客,跟大家分享一下我常用的几个第三方 Python 库。Python 语言之所以能够如此流行,除了本身内置许多程序库来保障...
    99+
    2023-01-31
    几个 第三方 常用
  • android adapter的作用是什么
    Android中的Adapter类作为数据源和ListView(或RecyclerView)之间的桥梁,用于将数据源中的数据适配到L...
    99+
    2023-10-23
    android adapter
  • 详解Android GLide图片加载常用几种方法
    目录缓存浅析GLide图片加载方法图片加载周期图片格式(Bitmap,Gif)缓存集成网络框架权限占位符淡入效果变换启动页/广告页banner固定宽高圆角圆形总结缓存浅析 为啥要做缓...
    99+
    2022-11-16
    Android GLide图片加载 Android GLide
  • Android ListView适配器(Adapter)优化方法详解
    Android ListView的优化,在做Android项目的时候,在用到ListView 界面及数据显示,这个时候如果资源过大,对项目来说,用户体验肯定是不好的,这里就对如...
    99+
    2022-06-06
    方法 adapter listview 优化 Android
  • 常用的android加密方式有哪几种
    常用的Android加密方式有以下几种:1. 文件加密:通过对文件进行加密,确保文件内容的机密性,常见的文件加密算法有AES(Adv...
    99+
    2023-10-18
    android
  • Redis常见的几个问题及解决方法
    本篇内容主要讲解“Redis常见的几个问题及解决方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis常见的几个问题及解决方法”吧! 1、如何保证Redis高可用和高并发Redi...
    99+
    2023-06-16
  • 优化mysql的几种常用方法
    下文我给大家简单讲讲关于优化mysql的几种常用方法,大家之前了解过相关类似主题内容吗?感兴趣的话就一起来看看这篇文章吧,相信看完优化mysql的几种常用方法对大家多少有点帮助吧。   ...
    99+
    2024-04-02
  • 几种常用的CSS居中方法
    CSS居中的方法,是网页制作中非常基础的技术之一。无论是居中文字还是图片,都可以通过简单的CSS代码来实现。下面,我们将介绍几种常用的CSS居中方法。一、居中一个div要把一个div居中,我们可以使用以下的CSS代码:div { w...
    99+
    2023-05-14
  • sql优化常用的几种方法
    sql 优化常用的方法 问题:常用的 SQL 优化方法有哪些? 答案:常用的 SQL 优化方法包括以下几种: 1. 索引优化 创建适当的索引以加速查询,减少表扫描。 删除不必要的索引以...
    99+
    2024-06-17
    sql优化
  • Android中ListView的几种常见的优化方法总结
    Android中的ListView应该算是布局中几种最常用的组件之一了,使用也十分方便,下面将介绍ListView几种比较常见的优化方法: 首先我们给出一个没有任何优化的Li...
    99+
    2022-06-06
    方法 listview 优化 Android
  • 关于maven的用法和几个常用的命令
    目录那么maven的作用是什么呢?下面介绍一些常用的命令及其作用(1)maven clean(2)maven compile(3)maven test(4)maven packet(...
    99+
    2022-11-13
    maven用法 maven常用的命令 maven命令
  • android按行读取文件内容的几个方法
    一、简单版 代码如下:  import java.io.FileInputStream; void readFileOnLine(){ String strFile...
    99+
    2022-06-06
    方法 Android
  • 分享几个Ecshop中二次开发的常见方法
    收货人信息的省市区设成非必选项 一般面向国外用户的ECSHOP商城,可能会有这方面的需求:【将Ecshop中收货人信息的省市区设成非必选项】,其实也就是只留一个“请选择国家”的下拉选择框。 修改相...
    99+
    2022-06-12
    Ecshop 二次开发
  • mysql常用到的几个命令
    查询类show databases;   --查看所有的数据库名show tables;     --查看当前数据库所有的数据表名,需要先 use 数据库create data...
    99+
    2024-04-02
  • python发送邮件的几种常用方法
    第一种是最常见的,smtp发送 import smtplibimport sysimport tracebackfrom email.mime.text import MIMETextfrom email.mime.multipart im...
    99+
    2023-09-02
    python 开发语言
  • python下载文件的几种常用方法
    python中下载文件常用的几个模块有urllib,urllib2,requests,方法也很简单,代码如下:# Python 2 code import urllib import urllib2 import requests     ...
    99+
    2023-01-31
    几种 常用 文件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作