View的setTag和getTag方法

---恢复内容开始---

public View getView(int position, View convertView, ViewGroup parent) {
        Msg msg =getItem(position);
        View view;
        ViewHolder viewHolder;
        if(convertView==null){
            view=LayoutInflater.from(getContext()).inflate(resourceId, null);
            viewHolder = new ViewHolder();
            viewHolder.leftLayout=(LinearLayout)view.findViewById(R.id.left_layout);
            viewHolder.rigthLayout=(LinearLayout)view.findViewById(R.id.right_layout);
            viewHolder.leftMsg=(TextView)view.findViewById(R.id.left_msg);
            viewHolder.rigthMsg=(TextView)view.findViewById(R.id.right_msg);
            view.setTag(viewHolder);
        }
        else{
            view=convertView;
            viewHolder=(ViewHolder)view.getTag();
        }
        if(msg.getType()==Msg.TYPE_RECEIVED){
            viewHolder.leftLayout.setVisibility(View.VISIBLE);
            viewHolder.rigthLayout.setVisibility(View.GONE);
            viewHolder.leftMsg.setText(msg.getContent());
        }else if(msg.getType()==Msg.TYPE_SENT){
            viewHolder.leftLayout.setVisibility(View.GONE);
            viewHolder.rigthLayout.setVisibility(View.VISIBLE);
            viewHolder.rigthMsg.setText(msg.getContent());
        }
        return view ;
    }

    class ViewHolder{
        LinearLayout leftLayout;
        LinearLayout rigthLayout;
        TextView leftMsg;
        TextView rigthMsg;
    }

---恢复内容结束---

这段代码从写了ArrayAdapter中getview方法,ViewHolder用于对控件的实例进行缓存。

其中用到了View的setTag()和getTag()方法

setTag()用于给View添加额外的数据,可以使用getTag()方法获取出这个额外的数据。

在此段代码中,我们把控件的实例都缓存在了ViewHolder中,就没有必要每次都通过findviewbyid获取实例。

时间: 2024-11-11 02:47:33

View的setTag和getTag方法的相关文章

Android之:View的setTag()与getTag()方法使用

通常我们是用findViewById()方法来取得我们要使用的View控件,不过除了这一种方法之处 ,我们还可以用View中的setTag(Onbect)给View添加一个格外的数据,再用getTag()获取到对应的View.setTag()和getTag()方法常用在处理多个相同的View时,比如我们有要对几个Button添加点击事件,我们除了可以用view.getId()来区分Button,也可以给Button设置Tag来进行区分.如: public class TagTestActivit

View的setTag和getTag使用

在listview 优化当中,会使用到setTag()以及getTag()方法 代码如下: @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if(convertView==null){ viewHolder = new ViewHolder(); convertView = inflater.inflate(R.layout.item,

android:View的setTag和getTag使用

1.用于区分很多相似的View 例如: button1.setOnClickListener(new OnClickListener ... ); button2.setOnClickListener(new OnClickListener ... ); 它们可能执行相似的逻辑,但你必须分别为两个Button设置两个独立的OnClick事件, public void onClick(View v) { doAction(1); // 1 for button1, 2 for button2, e

Android中View的setTag与getTag行为理解一例

最近在学Android,看到ListView的Adaptor优化这里遇到一点理解上的困难. 目前流行的优化方法是结合convertView和ViewHolder来优化View的创建和查找,如: public class ViewHolderAdapter extends ArrayAdapter { static class ViewHolder { TextView text1; TextView text2; TextView longtext; } public View getView(

view的setTag() 和 getTag()应用 ViewHolder

转自 http://www.cnblogs.com/qingblog/archive/2012/07/03/2575140.html View中的setTag(Onbect)表示给View添加一个格外的数据,以后可以用getTag()将这个数据取出来. 可以用在多个Button添加一个监听器,每个Button都设置不同的setTag.这个监听器就通过getTag来分辨是哪个Button 被按下. import android.app.Activity; import android.os.Bun

view的setTag() 和 getTag()应用 (转)

原文地址:http://www.cnblogs.com/qingblog/archive/2012/07/03/2575140.html View中的setTag(Onbect)表示给View添加一个格外的数据,以后可以用getTag()将这个数据取出来. 可以用在多个Button添加一个监听器,每个Button都设置不同的setTag.这个监听器就通过getTag来分辨是哪个Button 被按下. Java代码   import android.app.Activity; import and

把View转化成Bitmap的方法

方法一: /** * 把View绘制到Bitmap上 * @param view 需要绘制的View * @param width 该View的宽度 * @param height 该View的高度 * @return 返回Bitmap对象 * add by csj 13-11-6 */ public Bitmap getViewBitmap(View comBitmap, int width, int height) { Bitmap bitmap = null; if (comBitmap

Android 自定义View需要重写ondraw()等方法

Android  自定义View需要重写ondraw()等方法,这篇博客给大家说说自定义View的写法,需要我们继承View,然后重写一些 方法,方法多多,看你需要什么方法 首先写一个自定义的View 继承View package com.example.engineerjspview; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import and

ASP.NET MVC中 在controller 里将 Partial View 转化为字符串的方法

namespace Common.Helper { public static class ControllerExtension { //根据部分视图名称,把部分视图内容转换成字符串 public static string RenderPartialViewToString(this Controller controller, string partialViewName) { return controller.RenderPartialViewToString(partialViewN