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差不多了

0 0
原创粉丝点击