(相关资料图)
ListView的四种优化方式
优化方式一:
convertView的复用
代码如下:
@Overridepublic View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) {//如果当前的convertView为null,则通过inflate产生一个view convertView = View.inflate(context, R.layout.layout_pic_item,null); } TextView tvDis = (TextView) convertView.findViewById(R.id.tv_item_picture_desc); tvDis.setText("设置数据"); return convertView;}
优化方式二:
ViewHolder的使用
需要用到两个方法:setTag和getTag方法:
@Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; View itemView = null; if (convertView == null) { itemView = View.inflate(context, R.layout.item_news_data, null); holder = new ViewHolder(itemView); //用setTag的方法把ViewHolder与convertView "绑定"在一起 itemView.setTag(holder); } else { //当不为null时,我们让itemView=converView,用getTag方法取出这个itemView对应的holder对象,就可以获取这个itemView对象中的组件 itemView = convertView; holder = (ViewHolder) itemView.getTag(); } NewsBean newsBean = newsListDatas.get(position); holder.tvNewsTitle.setText(newsBean.title); holder.tvNewsDate.setText(newsBean.pubdate); mBitmapUtils.display(holder.ivNewsIcon, newsBean.listimage); return itemView; }}public class ViewHolder {@ViewInject(R.id.iv_item_news_icon) private ImageView ivNewsIcon;// 新闻图片 @ViewInject(R.id.tv_item_news_title) private TextView tvNewsTitle;// 新闻标题 @ViewInject(R.id.tv_item_news_pubdate) private TextView tvNewsDate;// 新闻发布时间 @ViewInject(R.id.tv_comment_count) private TextView tvCommentIcon;// 新闻评论 public ViewHolder(View itemView) { ViewUtils.inject(this, itemView); }}