listview与baseadapter

  最近listview结合baseadapter运用较多,对二者也慢慢变得熟悉起来,在这里做一个小小总结。

  listview属于典型的适配器控件,适配器控件派生自android.widget.AdapterView,一般由三部分组成,控制视图、数据源、适配器对象。适配器对象的作用就是:构造列表项控件,并将数据项绑定到列表项控件中,baseadapter是一种较为常用且功能强大的适配器,关键在于getView()方法的实现;

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        return null;
    }

在适配器的定制过程中,开发者需要明确列表项的数量,并确定每个列表项对应的数据内容,同时需要为列表项构造列表空间对象,并将对应的列表项数据绑定到列表项控件上。

  按照这样的方式构造适配器,当列表项很多事会导致子控件的数量急剧膨胀,耗费大量内存,甚至崩溃。android的适配器控件在设计时在getView函数中有一个输入函数convertView,用于缓存最近一个失去可视状态的列表项空间对象。如下图

convertView就是用于缓存失去可视状态的列表项控件,通过getView函数会传到开发者手里,开发者可以复用这个控件对象重新绑定即将可是的列表项对象数据,从而避免了构造新列表项控件的开销。结合ViewHolder将更加高效(避免重复getViewByid());待续

时间: 2024-10-23 21:22:47

listview与baseadapter的相关文章

Android ListView使用BaseAdapter与ListView的优化 (转至 http://www.open-open.com/lib/view/open1339485728006.html)

在ListView的使用中,有时候还需要在里面加入按钮等控件,实现单独的操作.也就是说,这个ListView不再只是展示数据,也不仅仅是这一行要来处理用户的操作,而是里面的控件要获得用户的焦点.读者可以试试用SimpleAdapter添加一个按钮到ListView的条目中,会发现可以添加,但是却无法获得焦点,点击操作被ListView的Item所覆盖.这时候最方便的方法就是使用灵活的适配器BaseAdapter了. ▲图4-35 BaseAdapter中的方法 使用BaseAdapter必须写一

Android ListView使用BaseAdapter与ListView的优化

在ListView的使用中,有时候还需要在里面加入按钮等控件,实现单独的操作.也就是说,这个ListView不再只是展示数据,也不仅仅是这一行要来处理用户的操作,而是里面的控件要获得用户的焦点.读者可以试试用SimpleAdapter添加一个按钮到ListView的条目中,会发现可以添加,但是却无法获得焦点,点击操作被ListView的Item所覆盖.这时候最方便的方法就是使用灵活的适配器BaseAdapter了. ▲图4-35 BaseAdapter中的方法 使用BaseAdapter必须写一

ListView 自定义BaseAdapter实现单选打勾(无漏洞)

最近因为一个项目的原因需要自定义一个BaseAdapter实现ListVIew单选打勾的功能,虽然听起来很简单,我在网上也 看过一些例子,似乎是实现了,但往往存在一些漏洞.往往漏洞如下 1.网上例子item较少,item增多时漏洞出现,忽略了BaseAdapter中getView()方法中convertView重用的问题 2.忽略了BaseAdapter中getView()方法并不是一下子加载完所有item,上下拖动listview时item会重新加载,getview会重新被调用,所以上下拖动的

View(视图)——ListView之BaseAdapter

1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="match_parent

android开发最常用例子整理----(3)自定义ListView(自定义BaseAdapter实现)

在上一个教程中,我们使用SimpleAdapter实现自定义ListView,但是有一点不方便的是,如果要对每一个ListView的item选项进行不同的样式设置,就很麻烦,因为SimpleAdapter使用的是统一的风格样式.如果要实现不同item使用不同的风格样式,那么就要通过集成BaseAdapter来实现. 一.Activity MainActivity.java源码: public class MainActivity extends Activity { @Override prot

android ListView 自定义 BaseAdapter

先上效果图 由上面的效果图可以看出:页面中的LISTVIEW的每一项,都是由两个TEXTVIEW组成,初始化的时候,只显示第一个TEXTVIEW,在这里我们成为标题,而内容部分的setVisible属性为"GONE".为Ite添加onClick监听器,在每次点击的时候,显示内容部分,这里需要调用BaseAdapter的notifyDataSetChanged()进行刷新显示. 代码部分: 1 class MyLayout extends LinearLayout { 2 3 priva

View(视图)——ListView之BaseAdapter和SimpleCursorAdapter以及网格视图代码视图

一.BaseAdapter 1.数据源  List<Object> 一般是放实体类.POJO类,一般只包含私有属性和属性的getter和setter方法. 2.layout:可以用布局,包含多个视图. 3.抽象类:必须要继承并实现4个抽象方法 1-int getCount()  返回数据源的记录数 2-Object getItem(int position) 返回索引对应的数据对象 3-long getItemId(int position)  返回索引对应的数据对象的ID 4-View ge

Android ListView之BaseAdapter

话说开发用了各种Adapter之后感觉用的最舒服的还是BaseAdapter,尽管使用起来比其他适配器有些麻烦,但是使用它却能实现很多自己喜欢的列表布局,比如ListView.GridView.Gallery.Spinner等等.它是直接继承自接口类Adapter的,使用BaseAdapter时需要重写很多方法,其中最重要的当属getView,因为这会涉及到ListView优化等问题. BaseAdapter与其他Adapter有些不一样,其他的Adapter可以直接在其构造方法中进行数据的设置

listview中 Baseadapter的简单使用

代码也是来自于网上,在自己理解之后稍微做下笔记,主要是在Baseadapter的部分增添了一些注释. main.xml <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent"