首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从0系统学Android--3.5 最常用和最难用的控件---ListView

比较简单,只需要重写一组构造方法和一个 getView() 方法就可以了,其他的方法 ArrayAdapter 都实现了。...这里使用了 LayoutInflater 来为这个子项加载我们传入的布局,LayoutInflater 的 inflate 方法需要传入三个参数,第一个参数就是要加载的布局,第二个参数就是这个布局要加入到这父布局中...因为在 getView() 方法中每次都将布局重新加载了一遍,当 ListView 快速滚动的时候,性能就会出现问题。...其实在 getView() 方法中还有一个 converView 参数,这个参数就是用于将之前加载好的布局进行缓存的,以便之后可以进行重复使用。...不过目前还需要优化,虽然不会再去重复的加载布局了,但是每次 getView() 方法中还是会调用 View 的 findViewById() 方法来获取一次控件的实例。

60710
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ListView详细介绍与使用

    前言介绍: 关于 ListView 我们大家都应该是非常的熟悉了,在 Android 开发中是经常用到的,今天就再来回顾一下,ListView 的使用方法,和一些需要优化注意的地方,还有日常开发过程中的一些小技巧和经验...,listData); 这里简单介绍一下 ArrayAdapter 的构造方法,ArrayAdapter 有好几个构造方法。...其中第一参数都是 Context 第二个参数就是要添加的 item 的布局 id 然后就是数据,数据可以使用数组也可以使用List。...) { return null; } } 重点讲解一下 BaseAdapter 中的这四个方法 BaseAdapter 之所以十分灵活,就是因为我们需要自己重写它的很多方法,尤其是 getView...实现方式二:使用 convertView 作为 View 缓存 将 convertView 作为 getView 的输入参数、返回参数 借助 ListView 的缓存机制,实现 view 的复用。

    1.5K20

    Android适配器作用

    Android Adapter适配器 Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View。...populated(显示) ListView中Item项的复杂布局xml文件中用来显示ArrayAdapter中数据的那个TextView public ArrayAdapter (Context...方法:   这个方法能够使用数组xml文件中配置的数据来创建一个ArrayAdapter,这个数组中的内容如何获得,通过this.getResources().getTextArray(id)方法获得...你也可以是使用其他的一些非TextView 控件来显示数组中的数据,通过重写Adapter的getView方法来得到你想要的view。...其实在Android中有很多这样的例子,在继承某个类时会默认让你Override一些方法,这些方法就是父类中没有实现的接口方法。

    1K10

    Adapter与ListView的简单应用(下)Android应用界面开发

    发现,既然ArrayAdapter是接受泛型的,那其实什么样的类都能传给它,并且它继承自BaseAdapter,可使用的方法很多。...包含泛型List的构造方法: public ArrayAdapter(Context context, int resource, List objects) 其它上一篇都说了,这次不使用数组,...mResourceId = resource; //获取list的布局文件 } @Override public View getView(int position, View convertView...中 }else { //如果convertView有值 mViewHolder = (ViewHolder) convertView.getTag(); //从convertView中拿到ViewHolder...其它不难理解,在其中创建了一个内部类ViewHolder,因为调用getview方法时,不需要每次都创建textView等属性的实例,只需要第一次创建时,将实例创建在ViewHolder内部;利用View

    63520

    android之ArrayAdapter的重写

    ListView视图对象和数组数据的适配器来做两者的适配工作,ArrayAdapter的构造需要三个参数,依次为this,布局文件(注意这里的布局文件描述的是列表的每一行的布局),数据源(一个List集合...list.add("一个喜欢的事业"); return list; } } 效果如下: 例子3:实现更复杂的效果: 这就需要重写getView方法了, 1....// 当手动完成适配时,必须手动映射数据,这需要重写getView()方法。 // 系统在绘制列表的每一行的时候将调用此方法。...// getView()有三个参数, // position表示将显示的是第几行, // covertView是从布局文件中inflate来的布局。...// 然后将xml文件中的各个组件实例化(简单的findViewById()方法)。 // 这样便可以将数据对应到各个组件上了。

    66720

    安卓第八夜 玛丽莲梦露

    由于数据是字符串类型的表,ArrayAdapter也有一个String的类型参数。一个ArrayAdapter中包含了数据和条目的具体格式。...我通过编写getView()方法,来说明每个Category对象和对应条目视图的绑定方式。...该方法的第一个参数代表了条目的编号,第二个参数是条目的视图,第三个参数代表了母视图,也就是整个ListView。需要注意的是第二个参数,即convertView。...由于ListView中消失的条目会通过convertView参数来重复利用,我们可以为convertView附加两个TextView元素(R.id.seq, R.id.name)的引用。...在if(convertView == null)的结构中可以看出,如果条目被重复利用,粘附在条目上的Holder对象将借助getTag()方法取出。

    61710

    安卓第八夜 玛丽莲梦露

    由于数据是字符串类型的表,ArrayAdapter也有一个String的类型参数。一个ArrayAdapter中包含了数据和条目的具体格式。...我通过编写getView()方法,来说明每个Category对象和对应条目视图的绑定方式。...该方法的第一个参数代表了条目的编号,第二个参数是条目的视图,第三个参数代表了母视图,也就是整个ListView。需要注意的是第二个参数,即convertView。...由于ListView中消失的条目会通过convertView参数来重复利用,我们可以为convertView附加两个TextView元素(R.id.seq, R.id.name)的引用。...在if(convertView == null)的结构中可以看出,如果条目被重复利用,粘附在条目上的Holder对象将借助getTag()方法取出。

    1.9K90

    Android listview

    它的作用又是什么呢? 之所以要有适配器是因为我们的数据不能直接传递给ListView,因此我们需要借助适配器来完成数据的传递。...而ArrayAdapter是android中比较好用的一种,可以通过泛型来指定要适配的数据类型,然后在构造函数中把要适配的数据传入 下面我们就来看一下各个部分的代码,首先我们来看一下MainActivity...,就会回调onItemClick()方法 // 在这个方法中可以通过position参数判断出用户点击的是那一个子项 listView.setOnItemClickListener...参数用于将之前加载好的布局进行缓存 @Override public View getView(int position, View convertView, ViewGroup parent...另外又重写了getView()方法,这个方法在每个子项被滚动到屏幕内的时候会被调用。

    1.2K20

    Android最常用的控件ListView(详解)

    2、ArrayAdapter可以通过泛型来指定要适配的数据类型,然后在构造凼数中把要适配的数据传入。 3、ArrayAdapter有多个构造函数的重载,可以根据实际情况选择最合适的一种。...(1)创建好后需要添加泛型(也就是我们创建的Fruit类) (2)按下键盘上的Alt+Enter键创建构造方法(倒数第二个list) (3)重写getView方法 4.inflate()方法...inflate()方法的三个参数 inflate(R.layout.fruit_item,parent,false) 1、第一个参数是布局;(自己写的) 2、第二个参数是父容器控件; 3、第三个布尔值参数表明是否连接该布局和其父容器控件...四.提升ListView的运行效率 目前我们ListView的运行效率是很低的,因为在FruitAdapter的 getView()方法中,每次都将布局重 新加载了一遍,将快速滚动的时候,...getView()方法中的convertView参数,用于将之前加载好的布局进行缓存,以便之 后可以进行重用。

    3.6K10

    Android开发:ListView、AdapterView、RecyclerView全面解析

    }//这个方法返回了在列表中与指定索引对应的行id @Override public View getView(int position, View convertView, ViewGroup...以下将使用4种重写方法来说明getView()的使用 重写getView()的第一种方法 @Override public View getView(int position, View...重写getView()的第二种方法:使用convertView作为缓存进行优化 getView()返回值是一个View,把它作为输入参数并放到getView()输入参数里,形成反馈。...; }//这个方法返回了指定索引对应的数据项的视图 这种方法和第一种相比减少了重绘View的次数,但是还是每一次都要findViewById 重写getView()第三种方法 通过convertView...}//这个方法返回了在列表中与指定索引对应的行id //利用convertView+ViewHolder来重写getView() static class ViewHolder {

    3.5K30

    跟我学Android之十一 列表和适配器

    _1, data); Ø第二个参数表示为列表控件提供列表项的显示视图 Ø第三个参数即为适配器所需要的数组数据 u使用ArrayAdapter对象作为列表控件的数据源...dataList.size();} u覆盖getView()方法,用于向列表提供列表项的显示视图 View getView (int position, View convertView, ViewGroup...parent) Ø列表项视图通常有两种方法 l通过布局资源定义,然后采用动态加载的方法使用 l通过程序实现布局 创建自定义适配器, getView()方法覆盖示例 public View getView...u在自定义适配器中添加增删改数据的方法 Ø在改变数据完成后一定要通知视图 public void addMail(Mail m) {dataList.add(m);notifyDataSetChanged...()方法 实现带图片的Spinner,通过覆盖getDropDownView()方法实现自定义视图 ArrayAdapter adapter =new ArrayAdapter

    7910

    13.Android-ListView使用、BaseAdapterArrayAdapterSimpleAdapter适配器使用

    适配器 BaseAdapter比较简单,主要是通过继承此类来实现BaseAdapter的四个方法: public int getCount(); //设置适配器中数据集的数据个数(ListView要显示的所有数据行...ID,一般都是直接返回position public View getView(int position,View convertView,ViewGroup parent); //获取每一行Item...ArrayAdapter的构造方法常用的有两种: public ArrayAdapter(Context context, int resource, T[] objects); //第一个参数 上下文...//第二个参数 包含且只有一个textview的布局文件id //第三个参数 要展示的数据数组 public ArrayAdapter(Context context, int resource,...指向resource中要显示数据的一个textView控件id //第三个参数 要展示的数据数组 接下来,我们使用第二种构造方法来演示.

    2K20
    领券