利用adapter中的getView的 contentView 的複用機制進行優化。java
listView,初始化的時候就會使用inflater來渲染這些view(這些是耗費資源的操做), 若是沒有優化,每次都會執行這個inflater來渲染。ide
建立一個靜態類ViewHolder,若是contentView不爲空,咱們能夠經過設置contentView的Tag來保存ViewHolder,不用再 每次去inflater。優化
static class ViewHolder { public TextView deviceName; } private class TAdapter extends BaseAdapter{ @Override public int getCount() { return beanList.size(); } @Override public Object getItem(int position) { return beanList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if(convertView == null){ convertView = getActivity().getLayoutInflater().inflater(R.layou.layout_list,parent,false); viewHolder = new ViewHolder(); viewHolder.deviceName = (TextView)convertView.findViewById(R.id.device_name); convertView.setTag(viewHolder);//在這裏保存在converView中 }else{ viewHolder = (ViewHolder)convertView.getTag(); } viewHolder.deviceName.setText(beanList.get(position).getText(); return convertView; } }