注:如果想要更新列表的话要加入adapter.notifyDataSetChanged();方法
优化方法:
1.将控件的声明写入一个自定义内部类中。
2.在getView方法中判断是否第一次执行,如果是第一次即convertView==null,则加载布局文件、设置控件。设置完成后将内部类对象通过convertView.setTag();方法存到convertView中。
3.如果不是第一次即convertView!=null,则通过convertView.getTag();方法获取到自定义内部类的的对象。
4.News item=list.get(position);获取到当前实体类的对象,并通过内部类对象设置控件
5.返回convertView
private Context context;
//需要List用于显示,LayoutInflater动态布局填充器用于加载布局文件,context用于初始化LayoutInflater
private ArrayList<News>list;
private LayoutInflaterinflater;
public View getView(int position, View convertView,ViewGroup parent) {
HolderViewholderView;
if(convertView==null){
convertView=inflater.inflate(R.layout.item_list_news,null);
holderView=new HolderView();
holderView.iv_pic=(ImageView) convertView.findViewById(R.id.imageView_pic);
...............
convertView.setTag(holderView);
}else{
holderView=(HolderView)convertView.getTag();
}
Newsitem=list.get(position);
holderView.iv_pic.setImageResource(item.getPic());
...............
return convertView;
}
class HolderView{
ImageViewiv_pic;
...............
}