获取滑入屏幕的行item之前会先判断缓存中是否有可用的item,如果有,做为convertView参数传递给adapter的getView。...@Override public View getView ( int position , View convertView , ViewGroup parent ) { ViewHolder...holder ; if ( convertView == null ) { convertView = inflater . inflate ( R . layout . list_item..., null ) ; holder = new ViewHolder ( ) ; …… convertView . setTag ( holder ) ; } else...{ holder = ( ViewHolder ) convertView . getTag ( ) ; } } 这样提升了性能,但同时也会造成另外一些问题: a.
public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) {...== ", "getView-----position" + position); } else { } return convertView; } ?...) { if (convertView == null) { convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list...viewHolder; if (convertView == null) { convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list...); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag();
匹配列表类型,并最大程度上的重新使用convertView。...mIcon1 : mIcon2); return item; } 正确的加载方式是当convertView不为空的时候直接重新使用convertView从而减少了很多不必要的View的创建,然后加载数据...public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) {...convertView = mInflater.inflate(R.layout.item, parent, false); } ((TextView) convertView.findViewById...(R.id.text); holder.icon = (ImageView) convertView.findViewById(R.id.icon); convertView.setTag(holder
, ViewGroup parent) { ViewHolder holder; if (convertView == null) { holder...= new ViewHolder(); convertView = LayoutInflater.from(mContext).inflate(R.layout.list_base_item..., null); holder.image = convertView.findViewById(R.id.image); holder.title =...convertView.findViewById(R.id.title); holder.content = convertView.findViewById(R.id.content...(holder); } else { holder = (ViewHolder) convertView.getTag(); }
convertView.findViewById(R.id.txt_aName); TextView txt_aSpeak = (TextView) convertView.findViewById...public View getView(int position, View convertView, ViewGroup parent) { if(convertView == null){...holder = null; if(convertView == null){ convertView = LayoutInflater.from(mContext).inflate...holder.txt_aSpeak = (TextView) convertView.findViewById(R.id.txt_aSpeak); convertView.setTag(...holder); //将Holder存储到convertView中 }else{ holder = (ViewHolder) convertView.getTag();
方法一:convertView参数 这个参数用于将之前加载好的布局进行缓存,以便之后进行重用。...convertView == null) { convertView = inflater.inflate(R.layout.item, null);...TextView)convertView.findViewById(R.id.title); TextView version = (TextView)convertView.findViewById...ViewHolder holder; if(convertView == null) { convertView = inflater.inflate...= (TextView)convertView.findViewById(R.id.version); holder.size = (TextView)convertView.findViewById
== null){ convertView = mInflater.inflate(R.layout.address_item,null); addressItem...= new AddressItem(convertView); convertView.setTag(addressItem); }else{...()); addressItem.detailView.setText(location.getAddress()); return convertView; }...) { titleView = (TextView)convertView.findViewById(R.id.address_item_title); detailView...= (TextView)convertView.findViewById(R.id.address_item_detail); } } 通过判断convertView是否为空来复用
(); convertView = View.inflate(context, R.layout.listview_item, null); holder.childText = (TextView...) convertView .findViewById(R.id.id_text); holder.childBox = (CheckBox) convertView .findViewById(...R.id.id_checkbox); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(...(); convertView = View.inflate(context, R.layout.group_item, null); holder.groupText = (TextView) convertView...); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.groupText.setText
1、ListView的复用简单来说就是使用ViewHolder复用convertView。说完大家尤其是初学者,没看过源码的同学不太明白。那我就举一个例子,让大家能够明明白白。...例子如下: public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder...= null; if (convertView == null) { convertView = mInflater.inflate(R.layout.lv_item...)convertView.getTag(); } holder.textView.setText(mData.get(position)); return...convertView; } } public class ViewHolder { public TextView textView; } 2、如何进行优化呢?
if (convertView ==null) { convertView =LayoutInflater.from(mContext).inflate(R.layout.item_view..., ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView...convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag();...) convertView.findViewById(R.id.item_tv2); convertView.setTag(holder2);....textView = (TextView)convertView.findViewById(R.id.item3_tv); convertView.setTag
convertView在Item为单一的同种类型布局时,能够回收并重用,但是多个Item布局类型不同时,convertView的回收和重用会出现问题。...,需要new出各个控件 if(convertView == null) { Log.e("convertView = ", " NULL"); ...Log.e("convertView = ", "NULL TYPE_1"); convertView.setTag(holder1); break; ...); Log.e("convertView = ", "NULL TYPE_2"); convertView.setTag(holder2); ... Log.e("convertView = ", "NULL TYPE_3"); convertView.setTag(holder3);
convertView = mInflater.inflate(R.layout.item, null); } ImageView img = (ImageView)convertView.findViewById...TextView test = (TextView)convertView.findViewById(R.id.ItemText); Button btn = (Button) convertView.findViewById...)convertView.findViewById(R.id.ItemText); holder.btn = (Button) convertView.findViewById...)convertView.findViewById(R.id.ItemTitle); holder.text = (TextView)convertView.findViewById...convertView.setTag(holder); } else { holder = (ViewHolder)convertView.getTag
= (TextView) convertView .findViewById(R.id.number); holder.date = (TextView) convertView.findViewById...) convertView.findViewById(R.id.type); holder.open = (ImageView) convertView.findViewById(R.id.open);...convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } convertView.setBackgroundColor...) convertView.findViewById(R.id.type); holder.open = (ImageView) convertView.findViewById(R.id.open);...convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } ContentValues cv
position) { return position; } @Override public View getView(int position, View convertView..., ViewGroup parent) { ViewHolder viewHolder = null; if(convertView == null){...convertView = LayoutInflater.from(ctx).inflate(R.layout.adapter_main_item, parent, false)...); viewHolder.btnItemRefresh = (Button) convertView.findViewById(R.id.btnItemRefresh);...convertView.setTag(viewHolder); }else{ viewHolder = (ViewHolder) convertView.getTag
2.解决 无法阻止多次调用getView,只能在onMeasure调用getView的时候不要去对convertView做赋值的操作,只有当onLayout的时候再对ConvertView进行操作。...int t, int r, int b) { isOnMeasure = false; super.onLayout(changed, l, t, r, b); } } 2).getView中对ConvertView...的处理 @Override public View getView(int position, View convertView, ViewGroup parent) { System.out.println...("xcqw getView 1***position"+position); ViewHolder holder = null; if (convertView == null) { convertView...(R.id.tv_content); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag()
, ViewGroup parent) { ViewHolder holder = null; //判断是否缓存 if (convertView == null...) { holder = new ViewHolder(); // 通过LayoutInflater实例化布局 convertView...(R.id.id_iv_pic); holder.idtvcontent = (TextView) convertView.findViewById(R.id.id_tv_content...= (ViewHolder) convertView.getTag(); } //依据位置提取相应的数据源对象 MainMenuListItemBean...当convertView不为空的时候,直接取出来即可 */ public class ViewHolder { public TextView idtvcontent;
, ViewGroup parent) { GroupViewHolder holder=null; if(convertView==null){ convertView =...(R.id.item_text); convertView.setTag(holder); } else { holder=(GroupViewHolder)convertView.getTag...(); } holder.text.setText(parentList[groupPosition]); return convertView; } @Override..., ViewGroup parent) { ChildViewHolder holder=null; if(convertView==null){ convertView...(R.id.item_text); convertView.setTag(holder); } else { holder=(ChildViewHolder
, ViewGroup parent) { //自定义的一个类用来缓存convertview ViewHolder holder = null; if (convertView == null) { convertView...(R.id.iv); holder.checkBox = (Button) convertView.findViewById(R.id.check); convertView.setTag(holder..., ViewGroup parent) { FolderViewHolder holder = null; if (convertView == null) { convertView = View.inflate...= (ImageView) convertView.findViewById(R.id.choose); convertView.setTag(holder); } else { holder = (...View.VISIBLE : View.GONE); return convertView; } } //自定义的一个类用来缓存convertview class FolderViewHolder {
getItemId(int position) { return position; } @Override public View getView(int position, View convertView..., ViewGroup parent) { ViewHolder viewHolder = null; if (convertView == null) { viewHolder =..., null); initViewHolder(convertView, viewHolder, position); } else { viewHolder = (ViewHolder...) convertView.getTag(); } refreshViewHolder(position, viewHolder); return convertView; }..., ViewHolder viewHolder, final int position) { viewHolder.modeifyorder = (RelativeLayout) convertView
, ViewGroup parent) { ViewHolder viewHolder = null; if (convertView == null) { viewHolder = new...ViewHolder(); convertView = getActivity().getLayoutInflater().inflate( R.layout.activity_order_item..., null); initViewHolder(convertView, viewHolder, position); //关键代码,获得下层蓝色的布局的id } else { viewHolder...= (ViewHolder) convertView.getTag(); } refreshViewHolder(position, viewHolder); return convertView...} private void initViewHolder(View convertView, ViewHolder viewHolder, final int position) {
领取专属 10元无门槛券
手把手带您无忧上云