Android ListView详解(一)

来源:互联网 发布:网络销售模式案例分析 编辑:程序博客网 时间:2024/05/22 02:12

ListView是最常用同时也是较为难用的控件,ListView中的每一个子项为一个Item,可以是字符串也可以是组合控件(图片与文字组合)。
要实现ListView,首先现在布局文件中定义ListView控件:
activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    >    <ListView        android:id="@+id/list_view"        android:layout_width="match_parent"        android:layout_height="match_parent"></ListView></LinearLayout>

这里定义完listview控件之后,就需要实现listview显示内容的实现。listview是用来显示大量数据的,所以我们需要先将数据准备好(一维或者多维数组),但是这些数据无法直接传给listview进行显示。所以我们需要适配器帮助我们完成传递。适配器其实就是Item数组,listview中的每一个子项均是一个Item。数组中有多少元素,listview就包含多少个Item(子项)。

我比较常用的适配器是ArrayAdapter,它通过泛型来指定需要适配的数据类型,然后再构造函数中把需要适配的数据传入即可。在本次实例中,我们需要适配的数据是String类型,因此将ArrayAdapter的泛型指定为String。另外重要的一点,我们还需要指定listview子项的布局文件,同样在适配器的构造函数中引入。

ListActivity.java

public class ListActivity extends Activity {    private List<Fruit> fruitList = new ArrayList<Fruit>();    public void onCreate(Bundle savedInstanceState){        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //初始化水果资源        initFruits();        //R.layout.fruit_item为子项布局文件        FruitAdapter adapter = new FruitAdapter(ListActivity.this,R.layout.fruit_item,fruitList);        ListView listView = (ListView) findViewById(R.id.list_view);        //将adapter装入listview中        listView.setAdapter(adapter);        //为listview中每个子项添加点击监听事件        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {                Fruit fruit = fruitList.get(i);                Toast.makeText(ListActivity.this,fruit.getName(),Toast.LENGTH_SHORT).show();            }        });    }    //装入适配器的数据的初始化,数据类型与ArrayAdapter指定的泛型数据类型必须一致    public void initFruits(){        Fruit apple = new Fruit("Apple",R.drawable.apple_pic);        fruitList.add(apple);        Fruit banana = new Fruit("Banana",R.drawable.banana_pic);        fruitList.add(banana);        Fruit orange = new Fruit("Orange", R.drawable.orange_pic);        fruitList.add(orange);        Fruit watermelon = new Fruit("Watermelon", R.drawable.watermelon_pic);        fruitList.add(watermelon);        Fruit pear = new Fruit("Pear", R.drawable.pear_pic);        fruitList.add(pear);        Fruit grape = new Fruit("Grape", R.drawable.grape_pic);        fruitList.add(grape);        Fruit pineapple = new Fruit("Pineapple", R.drawable.pineapple_pic);        fruitList.add(pineapple);        Fruit strawberry = new Fruit("Strawberry", R.drawable.strawberry_pic);        fruitList.add(strawberry);        Fruit cherry = new Fruit("Cherry", R.drawable.cherry_pic);        fruitList.add(cherry);        Fruit mango = new Fruit("Mango", R.drawable.mango_pic);        fruitList.add(mango);    }}

子项布局文件
fruit_item.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="horizontal" android:layout_width="match_parent"    android:layout_height="match_parent">    <TextView        android:id="@+id/fruit_name"        android:layout_gravity="center"        android:layout_marginLeft="10dip"        android:layout_width="wrap_content"        android:layout_height="wrap_content" /></LinearLayout>

这样我们最基本的ListView的实现方式就已经完成了。重点掌握住适配器的用法,就可以轻松实现ListView的显示。

0 0
原创粉丝点击