首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

ListView分页(带图片)展示用法案例

2012-07-03 
ListView分页(带图片)显示用法案例ListView是Android中最为常用的列表类型控件,ListView中的选择项目中样

ListView分页(带图片)显示用法案例
ListView是Android中最为常用的列表类型控件,ListView中的选择项目中样式很多有的是纯文字的、有的还可以带有图片。它的继承关系如下:
java.lang.Object
   ? android.view.View
     ? android.view.ViewGroup
       ? android.widget.AdapterView<T extends android.widget.Adapter>
         ? android.widget.AbsListView
           ? android.widget.ListView
android.widget.ListView继承了android.view.ViewGroup。
首先看一个纯文本的ListView例子,案例运行后会出现一个城市列表如图6-8所示,选择某个城市,弹出一个Toast,关于Toast的概念和使用会在下一节中介绍。
 


图6-8 ListView
程序代码请参考代码清单6-4:
【代码清单6-4】chapter6_3/src/com/work/ListView_1_Activity.java

android:layout_height="wrap_content"></ListView>
由于ListView在Android中是很常用的列表类型控件,只要是有多条信息需要显示的时候都可以考虑使用ListView展示出来,正是由于ListView使用的普遍,所以Android又提供了一个列表类型的Activity——ListActivity,来简化ListView开发。
通过继承ListActivity类而实现一个简单的ListView功能,而不要直接使用ListView控件。同样上面案例如果使用ListActivity请参考代码清单6-5的写法:
【代码清单6-5】chapter6_3/src/com/work/ListView_1.java


图6-9 自定义adapter
相关程序代码请参考代码清单6-6:
【代码清单6-6】chapter6_3/src/com/work/ListViewIcon_3.java

自定义的Adapter是EfficientAdapter,EfficientAdapter的相关代码请参考代码清单6-7:
【代码清单6-7】chapter6_3/src/com/work/ListViewIcon_3.java
if (convertView == null) {convertView = mInflater.inflate(R.layout.main, null);holder = new ViewHolder();holder.text = (TextView) convertView.findViewById(R.id.textview);holder.icon = (ImageView) convertView.findViewById(R.id.icon);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}

只有在convertView为null时才去实例化控件,创建convertView对象、holder对象,其中convertView对象是通过mInflater.inflate(R.layout.main, null)方法,从一个main.xml布局文件中加载并创建的。
而在convertView非null的时候不会实例化控件,否则每次都要实例化控件,当列表项目很多时,用户反复滑动屏幕会有“卡”的感觉,不再流畅了。
ViewHolder类是将每一个项目中的控件封装起来的类,可以在convertView 为null时候创建ViewHolder类的实例holder,然后通过convertView.setTag(holder);把它放到convertView中,而在convertView非null时候,再通过convertView.getTag()过的一个ViewHolder类的实例,这样在翻屏的时候就不会反复创建ViewHolder实例对象了,就本例而言只是创建了9个ViewHolder实例。
                                                       出自《Android开发案例驱动教程》第六章

热点排行