ListView这样用
来源:互联网 发布:地下水埋深数据 编辑:程序博客网 时间:2024/06/02 02:41
关于ListView的简单使用
第一步是在我们的布局代码中引入我们 控件。
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
然后在我们的要展示listview的Activity中,先把数据准备好。这里使用一个简单的一维数组来保存数据。
private String[] data = {
"Apple", "Banana", "Orange", "Watermelon",
"Pear", "Grape", "Pineapple", "Strawberry", "Cherry", "Mango"
};
然后我们在Activity的onCreate方法中添加逻辑,因为我们的方法需要用到父类的原来的逻辑,所以这里必须跟上个super.onCreate(saveInstanceState);然后再增加我们自己的逻辑。
这里需要介绍个新的类ArrayAdapter,它是个适配器,按照我的理解适配器也就是个接口,只是这个接口多了个功能,在作为一个给别人访问的入口的同时,会把要进来的东西进行转换,变为我能理解的东西。同样是那样东西,只是在你这里和在我这里又不样的样子。
这里我们有一个data数组的数据,但是他都是String类型的字符串,然后我们需要把它要表达的东西拿给我们的ListView,我们的listview不懂这字符串,但是它可以使用一个工具适配器(也就是转换器),把data字符串数组中的一个个String对象,转换为我们ListView中一个个List_Item布局控件中的text内容,这样我们的ListView就认得了。当然,在给我们的ListView添加一个转换器的时候,我们需要明确我们要的是怎样的转换器,使用ArrayAdapter类,指定context对象,转换的对象,和需要被转换的对象。这里要说明下activity还有application都是context的子类,所以一般传context对象,可以采取直接传activity。
这里再说说自定义自己的Listview
首先定义一个一个实体类,作为适配器的适配类型(被转换对象)。
比如这里要用到两个变量,一个是name,一个是图片的路径imageid。
然后再新建个布局文件,就是List_Item,因为需要一个图,一个字符串,所以就放imageView和textView。
现在呢,就要我们手动“做个转换器”,还是那句话,因为我们只要在原来的某个实现了的适配器上进行下改动,所以构造方法的super()要写。因为我们只是比之前多了个imageid,我们自己写了个List_Item布局,所以我们需要给个私有变量layoutId,来记录下我们的转换对象。然后在构造方法中把之前的系统内置的List_item变为我们定义的布局文件就好。
public MyAdapter(Context context, int layoutId,
List objects) {
super(context, textViewResourceId, objects);
this.layoutId = layoutId;
}
然后再重写一个getView()方法,这是个用来实现具体怎么转换的,首先要getItem()得到我们的被转换对象,官方说这个方法就是用来得到数据的,然后得到了被转换对象的数据后,用我们的LayoutInflater来找到我们的布局文件,并且把他填充到界面来,跟findviewbyid()差不多,一个是找xml文件,一个是找xml文件里面的控件。当布局文件加载进去以后,我们现在就可以找这个xml的List_Item布局文件的具体控件并加以修改显示图片和文件即可。
这样基本的原理擦略就在这里了。
提升ListView的运行效率
关于这个主要是看getView里的代码,看看哪些代码是多次被调用的,主要看资源的调用,这里一个是找xml布局文件,一个是找布局文件里面的控件会耗时间,主要是从这两个方面入手。一个是利用参数converView,另外一个是利用一个viewHolder类,每个List_Item都有一个ViewHold,来保存我们的控件资源位置。这样就不用每次都查找控件在资源系统的哪里了,而会先看看自己List_Item手头是不是已经拿到控件的位置了。关于ViewHolder类,可以写为内部类,因为这只是需要我们自己知道逻辑就好的,不用给别人调用知道的。
这样下来效率就提高了不少,就和recycleView差不多了
- ListView这样用
- ListView这样设置竟然导致BaseAdapter.getView疯狂执行
- ScrollView与ListView的嵌套,不推荐这样做
- 大家这样用新概念
- 大家这样用新概念
- 淘宝可以这样用!
- do while 这样用!!!!!!!!!!!!!!
- 这样用Google
- 标签,不是这样用的
- Javabean就是这样用的
- Javabean就是这样用的
- malloc还可以这样用
- Json还可以这样用
- 计算机能这样用吗
- 这样用也可以的!
- Function函数可以这样用
- 你这样用python吗
- 教你这样用Google
- 关于c++中的模板
- 六大设计原则浅析
- springside4项目源码研读(2)
- 2016/4/14
- Autofac创建实例的方法总结
- ListView这样用
- UIImageView圆角,自适应图片宽高比例,图片拉伸,缩放比例和图片缩微图
- 【LeetCode】98. Validate Binary Search Tree 解法,中序遍历,搜索二叉树合法性
- 一、JNI 小练习
- HDU 5247 找连续数(暴力)
- android四大组件
- Android实现图片压缩并且不失真
- epoll网络编程实例
- 虚拟机下网络连接不上