标签:
数据源的来源是各种各样的,而ListView展示数据是有一定的要求的。降低程序的耦合性。容易扩展。
最常用的适配器 BaseAdapter
ListView GradView 的显示与缓存机制
需要的时候才显示,显示完就被回收到缓存。
BaseAdapter基本结构:
1、public int getCount() :适配器中数据集中数据的个数,就是这个listView总共要显示多少数据
2、public object getItem(int position) 获取数据集中与指定索引对应的数据项
3、public long getItemId(int position) 获取指定行对应的ID
4、public View getView(int position , View convertView,ViewGroup parent) 获取每一个Item的显示内容。
1、创建布局文件
2、创建数据源 先bean 对象来封装要现实的内容。,基本为每个控件建立一个,实现构造方法。 在Activity 里面建了一些假数据。
3、创建一个adater ,继承自 BaseAdapter ,实现四个方法。实现构造方法。
getView实现的三重境界。 初始化LayoutInflater ,这时候就需要传进来一个 Context 对象来初始化LayoutInflater 对象。。
layoutInfalter mInflater; 通过他就可以把XML文件转换成View。
View view = mInflater.Inflater(R.layout.item,null);
通过View一次findViewByID 找到控件
然后从mList里面取出数据赋给找到的控件。
由于每一项里面都会使用到mList.get(position) 对象。所以提取出来。
imageView.setImageResource(mList.get(position).ImageItemimnageResid);
逗比式:没有任何优化处理,每次都创建一个新的View 对象,设置控件。
@Override public View getView(int position, View convertView, ViewGroup parent) { //为空,View违背实例化,缓冲池中无缓存。 View view = mInflater.inflate(R.layout.item_listview, null); ivPicture = (ImageView) view.findViewById(R.id.iv_picture); tvName = (TextView) view.findViewById(R.id.tv_name); tvPosition = (TextView) view.findViewById(R.id.tv_position); tvNumber = (TextView) view.findViewById(R.id.tv_number); ItemBean bean = mList.get(position); ivPicture.setImageResource(bean.ivPicture); tvName.setText(bean.tvName); tvPosition.setText(bean.tvPosition); tvNumber.setText(bean.tvNumber); return view; }
普通式:用listView的缓存机制。convertView 就可以用上缓存机制。return convertView
@Override public View getView(int position, View convertView, ViewGroup parent) { //为空,View违背实例化,缓冲池中无缓存。 if(convertView ==null ){ convertView = mInflater.inflate(R.layout.item_listview, null); } ivPicture = (ImageView) convertView.findViewById(R.id.iv_picture); tvName = (TextView) convertView.findViewById(R.id.tv_name); tvPosition = (TextView) convertView.findViewById(R.id.tv_position); tvNumber = (TextView) convertView.findViewById(R.id.tv_number); ItemBean bean = mList.get(position); ivPicture.setImageResource(bean.ivPicture); tvName.setText(bean.tvName); tvPosition.setText(bean.tvPosition); tvNumber.setText(bean.tvNumber); return convertView; }
标签:
原文地址:http://www.cnblogs.com/zrui513/p/4913829.html