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
- Android ListView详解(一)
- Android ListView详解(一)
- ListView详解(一)
- ListView 详解(一)
- ListView详解(一)
- Android开发详解之ListView详解一
- Listview详解一(ArrayAdapter)
- android 之 listview (一)
- android 之listview(一)
- Android控件ListView(一)
- Android ListView详解(二)
- Android ListView详解(三)
- Cocos2dx HelloWorld+ListView详解(一)
- listview详解一
- C#ListView详解(一)
- Android UI系统控件进阶(一)之列表控件ListView详解
- 自学Android之UI组件:(一)ListView功能详解And实战
- android listview系列之初步接触listview(一)
- android中图片色调识别探究
- Web设计——初识HTML
- HDU1045 Fire Net(DFS)
- Spring MVC 教程,快速入门,深入分析
- Eclipse External Tools --变量设置
- Android ListView详解(一)
- js控制5秒后页面自动跳转
- Linux内存管理之mmap详解
- 用法
- Java第一周:1.2
- Cypher语言语法简介
- Android 4.4+ 实现半透明状态栏(Translucent Bars)
- 1099. Build A Binary Search Tree (30)
- 【Linux 学习】数据流重导向