当前位置: 代码迷 >> Android >> 关于adapter的getView解决方法
  详细解决方案

关于adapter的getView解决方法

热度:56   发布时间:2016-05-01 21:31:21.0
关于adapter的getView
请问以下两种写法那种比较好 , 效率上有什么区别吗?

Java code
public View getView(int position, View convertView, ViewGroup parent) {    if (convertView == null) {            convertView = inflater.inflate(R.layout.item, null);            TextView id = (TextView) convertView.findViewById(R.id.id);            TextView name = (TextView) convertView.findViewById(R.id.name);            id.setText("xxx");            name.setText("xxx");    }        return convertView;}public View getView(int position, View convertView, ViewGroup parent) {    if (convertView == null) {        convertView = inflater.inflate(R.layout.item, null);    }        TextView id = (TextView) convertView.findViewById(R.id.id);        TextView name = (TextView) convertView.findViewById(R.id.name);        id.setText("xxx");        name.setText("xxx");        return convertView;}


------解决方案--------------------
你这两种效率上差别不大吧,差别也就在于取值
现在网上资料中效率最高的应该就是保存到tag中,像下面这样
Java code
ViewHolder holder;            if (convertView == null) {                // 获得ViewHolder对象                holder = new ViewHolder();                convertView = mInflater.inflate(R.layout.callinteritem, null);                holder = new ViewHolder();                holder.callName = (TextView) convertView                        .findViewById(R.id.tv_interName);                holder.callNumber = (TextView) convertView                        .findViewById(R.id.tv_interNumber);                holder.callcheck = (CheckBox) convertView                        .findViewById(R.id.cb_inter);                holder.inter_delete = (Button) findViewById(R.id.bt_ci_del);                convertView.setTag(holder);            } else {                // 取出holder                holder = (ViewHolder) convertView.getTag();            }            holder.callName.setText(interlist.get(position).getCallInterName());            holder.callNumber.setText(interlist.get(position)                    .getCallInterNumber());
  相关解决方案