下面是一段自定义适配器中的getView方法,其中使用了view的一个setTag和getTag方法

  View中的setTag(Onbect)表示给View添加一个格外的数据(相当于缓存),以后可以用getTag()将这个数据取出来。

  下面是继承BaseAdapter的一个自定义适配器中的getView方法的内容,其中就用到了setTag和getTag方法

public View getView(int arg0, View arg1, ViewGroup arg2) {
// #A 加载
Log.d(LogUtil.TAG,"enter "+ arg0 + "");
if (arg1 == null) {
arg1 = layoutInflater.inflate(R.layout.listview_item, null);
HoldView holdView = new HoldView(arg1);
arg1.setTag(holdView); //加载控件
Log.d(LogUtil.TAG, arg0 + " null -- load");
}
// #B 拿到当前的数据
News news = newsList.get(arg0);
int drawId = news.getDrawID();
String title = news.getTitle();
String text = news.getText();
Log.d(LogUtil.TAG,"drawId:"+ drawId + " title:"+ title + " text:"+text);
// #C 将数据对应到控件
HoldView holdView = (HoldView) arg1.getTag();
holdView.iv_id.setImageResource(drawId);
holdView.tv_title.setText(title);
holdView.tv_text.setText(text);
return arg1;
}

  方法中的arg0代表下标,arg1即代表缓存,首次的时候,缓存中没有数据,进入if语句中,然后把控件存放在arg1中,也就是放入缓存中,以后就不用每次都从布局文件中取了,提高了效率。
  先前一直不明白一点:最后的这个return arg1有点不明白,应该说holdView中的数据已经填充上了,但是holdView已经是从arg1中拿出来的修改了,又没有重新放进去,arg1又怎么会改变?

  最后问了一下网友,说是holdView只是arg1中对应的一个引用,当修改了holdView,对应的arg1也修改了,这样的话,上面的代码应该很好理解了。

view中的setTag和getTag方法的理解的更多相关文章

  1. View的setTag和getTag方法

    ---恢复内容开始--- public View getView(int position, View convertView, ViewGroup parent) { Msg msg =getIte ...

  2. View的setTag()与getTag()方法使用

    通常我们是用findViewById()方法来取得我们要使用的View控件,不过除了这一种方法之处 ,我们还可以用View中的setTag(Onbect)给View添加一个格外的数据,再用getTag ...

  3. Android view中的requestLayout和invalidate方法

    Android view中的requestLayout和invalidate方法 requestLayout:当view确定自身已经不再适合现有的区域时,该view本身调用这个方法要求parent v ...

  4. 转载:JAVA中关于set()和get()方法的理解及使用

    对于JAVA初学者来说,set和get这两个方法似乎已经很熟悉了,这两个方法是JAVA变成中的基本用法,也是出现频率相当高的两个方法. 为了让JAVA初学者能更好的理解这两个方法的使用和意义,今天笔者 ...

  5. JAVA中关于set()和get()方法的理解及使用

    对于JAVA初学者来说,set和get这两个方法似乎已经很熟悉了,这两个方法是JAVA变成中的基本用法,也是出现频率相当高的两个方法. 为了让JAVA初学者能更好的理解这两个方法的使用和意义,今天笔者 ...

  6. JAVA中关于set()和get()方法的理解以及使用

    set()和get()方法的理解 set和get这两个词的表面意思,set是设置的意思,而get是获取的意思,顾名思义,这两个方法是对数据进行设置和获取用的. 而且,在类中使用set和get方法时,都 ...

  7. android之在view中内嵌浏览器的方法

    我要做的一个东西是在一个页面的中间嵌入浏览器,一开始不知道从哪里开始,因为以前用的都是Textveiw或者editVeiw之类的控件,而它们并不能用来显示网页的内容,怎么办呢? 首先想到的是:是不是有 ...

  8. 在view中常见的四种方法的使用场合

    四种方法,使view创建好里面就有东西:[1.init  2.initWithFrame使用代码创建的时候.(从文件创建的时候不一定调用:1.init  2.initWithFrame这两个方法) 3 ...

  9. 对于自定义标签类中JspBody类的invoke方法的理解

    下面是javaeeAPI中对于invoke()方法的介绍: 其中的参数out是一个Writer类的对象,如果写null,就是将标签体内容写到了与此jsp相关联的JspWriter对象,也就是下面的w: ...

随机推荐

  1. Google java编程技术规范

    不遵循规范的程序猿,不是好的coder. 学习java有一段时间了,一直想找java编程技术规范来学习一下,幸而网络资源丰富,各路玩家乐于分享,省去了好多麻烦,姑且算站在网友的肩上,砥砺前行. /** ...

  2. VMware下打开Chrome OS遇到没有网络连接可用

    打开ChromeOS.vmx文件,最后一行添加 ethernet0.virtualDev = "e1000" 就能解决.

  3. the request doesn't contain a multipart/form-data or multipart/form-data stream, content type header

    the request doesn't contain a multipart/form-data or multipart/form-data stream, content type header ...

  4. Bootstrap 分页插件 ajax获取数据显示

    Bootstrap 分页插件 ajax获取数据显示 标签(空格分隔): bootstrap 文章的内容是使用bootstrap-paginator进行分页,使用ajax获取后台数据.渲染. 1. 版本 ...

  5. Android判断界面

         仿造微信,第一次进入去引导界面,否则进启动界面. package edu.hpu.init; import edu.hpu.logic.R; import android.app.Activ ...

  6. Android如何在一个线性布局里完美显示两个listview啊?

    复写一个listView ,在你布局文件中使用此view: <ScrollView android:layout_width="fill_parent" android:la ...

  7. [cocos2dx]计算scrollview元素的index

    scrollview的原生代码没有提供元素对齐功能 通过下面介绍的index计算方法以及scrollview自带的设置位置方法 void setContentOffsetInDuration(CCPo ...

  8. Learing WCF Chapter1 WCF Services

    WCF ServicesWCF services are the new distributed boundary in an enterprise application—with an empha ...

  9. UITextView 动态高度计算(iOS7版)

    NSDictionary *attrsDictionary = [NSDictionarydictionaryWithObject:[UIFontsystemFontOfSize:kCellConte ...

  10. Android 网络通信框架Volley简介(Google IO 2013)

    1. 什么是Volley 在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient( ...