做网站的大公司,手机页面,wordpress中文版下载地址,软件ui设计师在使用ListView的时候#xff0c;需要加载适配器和数据源#xff0c;这篇文章主要介绍一下ListView的使用以及利用ListView的缓存机制来减少系统的初始化时间。 ListView的使用 ListView和ViewPager很类似#xff0c;首先在ArrayList中存放数据源#xff0c;并把它作为Adap…在使用ListView的时候需要加载适配器和数据源这篇文章主要介绍一下ListView的使用以及利用ListView的缓存机制来减少系统的初始化时间。 ListView的使用 ListView和ViewPager很类似首先在ArrayList中存放数据源并把它作为Adapter的构造函数的参数传入Adapter类中之后在Adapter中实现相应方法具体代码如下 1.在ArrayList中存放数据源 由于ListView中每一个View是一个Item所以数据源中需要存放Item当中每一个View的信息因此可以定义一个自定义类来存放这些需要存放的信息。代码如下 XML中声明Item包括一个ImageView和一个TextView ?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationhorizontalImageViewandroid:layout_width80dpandroid:layout_height80dpandroid:srcdrawable/addandroid:idid/goods_iv/TextViewandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:idid/goods_tv//LinearLayout 自定义Goods类来存放需要修改的信息 public class Goods
{public String text;public int ImageId;
} 在Activity中声明ArrayList并生成数据源 ArrayListGoods goodsnew ArrayList();for(int i1;i20;i){Goods goodnew Goods();good.ImageIdR.drawable.good;good.text商品i;goods.add(good);} 2.构造适配器 ListView的适配器为BaseAdapter其中getCount(),getItem()和getItemID()三个方法与PageAdapter类似最有讲究的便是getView方法这里着重讲解一下getView的写法 getView方法主要是获取position位置的View对象。我们可以每次都声明一个新的View并通过findViewById获取Item中的每个控件但这样会用到大量的耗时操作并重复占用资源。因此我们可以利用ListView的缓存机制来获取这些View对象。 首先在BaseAdapter中声明一个内部类用来存放已经缓存好的每一个组件 class ViewHolder{public ImageView iv;public TextView tv;} 然后对应getView每一个需要加载的View来说判断他是否已经被加载过如果没有便进行加载并利用View的setTag方法把已经加载的View和组件相关联 Overridepublic View getView(int position, View convertView, ViewGroup parent){ViewHolder viewHolder;if(convertViewnull){convertViewinflater.inflate(R.layout.item_goods,null);viewHoldernew ViewHolder();viewHolder.iv (ImageView) convertView.findViewById(R.id.goods_iv);viewHolder.tv (TextView) convertView.findViewById(R.id.goods_tv);convertView.setTag(viewHolder);} 若已经加载过则直接取出进行组件的修改即可 else{viewHolder (ViewHolder) convertView.getTag();}Goods goodgoodslist.get(position);viewHolder.iv.setImageResource(good.ImageId);viewHolder.tv.setText(good.text);return convertView 3.ListView与适配器向关联 与ViewPager类似这里只给出代码不再赘述 GoodsAdapter adapternew GoodsAdapter(goods,getContext());listview.setAdapter(adapter); 转载于:https://www.cnblogs.com/J-inx/p/6622104.html