zoukankan      html  css  js  c++  java
  • 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获取实例。

  • 相关阅读:
    前端开发-接口管理
    elementui_5(查看报告功能的开发)
    elementui_4(选择用例功能的开发)
    elementui_3(编辑、删除功能的开发)
    elementui_2(添加功能的开发和loading的开发)
    elementui_1(整个table页面的开发)
    vue基础(axios)
    vue基础
    python ddt数据驱动二(json, yaml 驱动)
    ffmpeg文档15-编码器
  • 原文地址:https://www.cnblogs.com/fajieyefu/p/5539487.html
Copyright © 2011-2022 走看看