Android学习之ListView显示下拉列表

来源:互联网 发布:部落冲突骷髅法术 数据 编辑:程序博客网 时间:2024/06/04 08:40

                                     ListView显示下拉列表(一)

ListView在android中有一个很强大的功能就将获取的数据源以下拉列表的方式部署在用户屏幕上,这种机制最常见的应用 有美团、淘宝这些app,会把商品以列表形式放在屏幕中,你下拉列表,会刷新数据,一般这些数据是图文并茂的,左边是图,右边是对图中商品的描述,如图:

                  

那么怎么实现他们呢?这里我们要说明两个两个适配器:一个叫ArrayAdapter,另个叫SimpleAdapter。这两个适配器有什么不同呢?

1.ArrayAdapter用于绑定单一的数据、数据源,只能是数组或集合类型,如第三个图是纯文字形式。

2.SimpleAdapter用于绑定复杂的数据,数据源:只能是特定泛型的集合,如第一二个图片都有图文描述,这种适配器不像其名字一样simple,反而功能更多更强大。

 那么适配器是做什么用的呢?简单来说就是,数据适配器是链接数据源和视图界面的桥梁,把复杂的数据eg:数组、链表、数据库、集合等填充在指定的界面上。

适配器添加数据并呈现至视图的整个过程如下:新建适配器->添加数据源到适配器->视图加载适配器。如果点击每一列需要产生事件则要添加监听器OnItemClickListener,可以处理视图中单个条目的点击事件;如果滑动加载数据则要添加监听器OnScrollListener,用来检测滚动的变化,可以用于视图在滚动中加载数据。

先从简单的开始来介绍,要使用纯文本形式我们可以用ArrayAdapter这个适配器,源码先奉上:

public class MainActivity extends Activity implements OnItemClickListener,OnScrollListener {
    private ListView lv;//下拉列表
    private ArrayAdapter<String> arr_adapter;//数组适配器,这里我们定义成字符串类型
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv=(ListView)findViewById(R.id.listView); //1.新建一个适配器,新建数据源
        //ArrayAdapter(上下文,当前listView中加载的每一个列表项所对应的布局文件,数据源)
      
        /*
        2.适配器加载数据源
        3.视图加载适配器
         */
        String arr_data[]={"科比","乔丹","魔术师","张伯伦","斯托克顿","马龙","奥尼尔","纳什","忘了爱","杀马特"};//生成一个数据源
        arr_adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arr_data);
         lv.setAdapter(arr_adapter);
}
   
}

然后解释一下其中的一些参数,ArrayAdaper有三个参数,第一个是上下文,这里就是我们所在的activity组件中,所以写this;第二个是布局模式,我们选择自带的模式android.R.layout.simple_list_item_1;第三个就是数据源,我们在之前已经定义了一个数组里面存放了一些球星,这里数据有点多是为了展示当数据超过屏幕可以通过手指滑动屏幕的方式显示剩余的数据。

新建好适配器,只要为listView加载ArrayAdapter适配器即可。

为了使大家方便观察效果,我把xml中的ListView源码也奉上,大家可以根据自己喜好设计listView的布局(其实没几行尴尬):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">


    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/listView" />
</LinearLayout>


然后在activity中新建ArrayList并且通过ID绑定xml文件中的ListView即可(注意这个应该是整个activity操作的第一步,只有关联到xml文件后面的一系列操作才有用)

最后部署至模拟器即可

效果如下:滑动即产生剩余数据如右图。

                                                  

注:感谢观看,如果有喜欢android编程的同学可以加我qq805198265,大家一块学习进步啊吐舌头




0 0
原创粉丝点击