一、ListView的简单用法

2. 训练目标

1) 掌握 ListView 控件的使用

2) 掌握 Adapter 桥梁的作用

实现步骤:

1)首先新建一个项目, 并让ADT 自动帮我们创建好活动。然后修改activity_main.xml 中的代码,如下所示:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. android:id="@+id/activity_main"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. tools:context="cn.edu.bu.a13lab07.MainActivity">
  8. <ListView
  9. android:layout_width="match_parent"
  10. android:layout_height="match_parent"
  11. android:id="@+id/list_view"
  12. >
  13. </ListView>
  14. </LinearLayout>

在布局中加入ListView 控件,并为ListView 指定了一个id 设置成match_parent 占满整个空间

2)在MainActivity 中

  1. public class MainActivity extends Activity {
  2. private String[] data = { "Apple", "Banana", "Orange", "Watermelon",
  3. "Pear", "Grape", "Pineapple", "Strawberry", "Cherry", "Mango" };
  4. @Override
  5. protected void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.activity_main);
  8. ArrayAdapter<String> adapter = new ArrayAdapter<String>(
  9. MainActivity.this, android.R.layout.simple_list_item_1, data);
  10. ListView listView = (ListView) findViewById(R.id.list_view);
  11. listView.setAdapter(adapter);
  12. }
  13. }

(1)、在这里我运用了系统包含的一个TextView的布局文件:android.R.layout.simple_expandable_list_item_1,调用这个比较方便,

(2)、ArrayAdapter<String> adapter = new ArrayAdapter<String>(  MainActivity.this, android.R.layout.simple_list_item_1, data);  的意思是:创建一个数组适配器的代码,里面有三个参数,第一个参数是上下文,就是当前的Activity, 第二个参数是android sdk中自己内置的一个布局,它里面只有一个TextView,这个参数是表明我们数组中每一条数据的布局是这个view,就是将每一条数据都显示在这个 view上面;第三个参数就是我们要显示的数据。listView会根据这三个参数,遍历data里面的每一条数据,读出一条,显示到第二 个参数对应的布局中,这样就形成了我们看到的listView.

(3)、ArrayAdapter是BaseAdapter的子类

3)运行效果图:

二、定制ListView界面

1.训练目标

1) 掌握 ListView 控件的使用

2) 掌握如何自定义 Adapter 的使用

2. 主要参考步骤及代码

1) 定义一个实体类 Fruit,作为 ListView 适配器的适配类型。

2) 为 ListView 的子项指定一个我们自定义的布局 fruit_item.xml。

3) 创建一个自定义的适配器 FruitAdapter,这个适配器继承自 ArrayAdapter。重写构造方法和 getView 方法。

4)在MainActivity中编写,初始化水果数据

1、定义一个实体类Fruit

  1. package cn.edu.bu.a13lab07;
  2. /**
  3. * Created by lw on 2017/4/14.
  4. */
  5. public class Fruit {
  6. private String name;
  7. private int imageId;
  8. public Fruit(String name, int imageId) {
  9. this.name = name;
  10. this.imageId = imageId;
  11. }
  12. public String getName() {
  13. return name;
  14. }
  15. public int getImageId() {
  16. return imageId;
  17. }
  18. }

2、为 ListView 的子项指定一个我们自定义的布局 fruit_item.xml。

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent">
  5. <ImageView
  6. android:id="@+id/fruit_image"
  7. android:layout_width="wrap_content"
  8. android:layout_height="wrap_content" />
  9. <TextView
  10. android:id="@+id/fruit_name"
  11. android:layout_width="wrap_content"
  12. android:layout_height="wrap_content"
  13. android:layout_gravity="center"
  14. android:layout_marginLeft="10dip" />
  15. </LinearLayout>

3、创建一个自定义的适配器 FruitAdapter,这个适配器继承自 ArrayAdapter。重写构造方法和 getView 方法。

  1. package cn.edu.bu.a13lab07;
  2. import android.content.Context;
  3. import android.view.LayoutInflater;
  4. import android.view.View;
  5. import android.view.ViewGroup;
  6. import android.widget.ArrayAdapter;
  7. import android.widget.ImageView;
  8. import android.widget.TextView;
  9. import java.util.List;
  10. /**
  11. * Created by lw on 2017/4/14.
  12. */
  13. public class FruitAdapter extends ArrayAdapter{
  14. private final int resourceId;
  15. public FruitAdapter(Context context, int textViewResourceId, List<Fruit> objects) {
  16. super(context, textViewResourceId, objects);
  17. resourceId = textViewResourceId;
  18. }
  19. @Override
  20. public View getView(int position, View convertView, ViewGroup parent) {
  21. Fruit fruit = (Fruit) getItem(position); // 获取当前项的Fruit实例
  22. View view = LayoutInflater.from(getContext()).inflate(resourceId, null);//实例化一个对象
  23. ImageView fruitImage = (ImageView) view.findViewById(R.id.fruit_image);//获取该布局内的图片视图
  24. TextView fruitName = (TextView) view.findViewById(R.id.fruit_name);//获取该布局内的文本视图
  25. fruitImage.setImageResource(fruit.getImageId());//为图片视图设置图片资源
  26. fruitName.setText(fruit.getName());//为文本视图设置文本内容
  27. return view;
  28. }
  29. }
View view = LayoutInflater.from(getContext()).inflate(resourceId, null);使用Inflater对象来将布局文件解析成一个View

4、在MainActivity中编写,初始化水果数据

  1. package cn.edu.bu.a13lab07;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.widget.ArrayAdapter;
  5. import android.widget.ListView;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. public class MainActivity extends Activity {
  9. private List<Fruit> fruitList = new ArrayList<Fruit>();
  10. @Override
  11. protected void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.activity_main);
  14. initFruits(); // 初始化水果数据
  15. FruitAdapter adapter = new FruitAdapter(MainActivity.this, R.layout.fruit_item, fruitList);
  16. ListView listView = (ListView) findViewById(R.id.list_view);
  17. listView.setAdapter(adapter);
  18. }
  19. private void initFruits() {
  20. Fruit apple = new Fruit("Apple", R.drawable.apple_pic);
  21. fruitList.add(apple);
  22. Fruit banana = new Fruit("Banana", R.drawable.banana_pic);
  23. fruitList.add(banana);
  24. Fruit orange = new Fruit("Orange", R.drawable.orange_pic);
  25. fruitList.add(orange);
  26. Fruit watermelon = new Fruit("Watermelon", R.drawable.watermelon_pic);
  27. fruitList.add(watermelon);
  28. Fruit pear = new Fruit("Pear", R.drawable.pear_pic);
  29. fruitList.add(pear);
  30. Fruit grape = new Fruit("Grape", R.drawable.grape_pic);
  31. fruitList.add(grape);
  32. Fruit pineapple = new Fruit("Pineapple", R.drawable.pineapple_pic);
  33. fruitList.add(pineapple);
  34. Fruit strawberry = new Fruit("Strawberry", R.drawable.strawberry_pic);
  35. fruitList.add(strawberry);
  36. Fruit cherry = new Fruit("Cherry", R.drawable.cherry_pic);
  37. fruitList.add(cherry);
  38. Fruit mango = new Fruit("Mango", R.drawable.mango_pic);
  39. fruitList.add(mango);
  40. }
  41. }

5、运行效果图

这样一个简单的ListView界面就完成了

Android—— ListView 的简单用法及定制ListView界面的更多相关文章

  1. android:ListView 的简单用法

    首 先新 建 一个 ListViewTest 项 目, 并 让 ADT 自 动帮 我 们创 建 好 活动 . 然后 修 改 activity_main.xml 中的代码,如下所示: <Linea ...

  2. Android Spinner的简单用法。

    今天学到的是spinner,就是下拉列表,这可不是ExpandListView哈. 闲话不解释.这是控件,所以先上布局:就不上线性布局了,基本上可以总结出,控件都得在布局里写,写之前嵌个布局就行. & ...

  3. android#ListView的简单用法

    新建项目,并修改项目生产的主文件activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/ap ...

  4. android的ListAdapter简单用法

    ListAdapter是一个整个Activity有且仅有一个ListView控件的Activity 使用步骤:1. 创建MyListViewAdapter(类名可以自定义) extends ListA ...

  5. android Spinner的简单用法

    上代码: spinner = (Spinner) findViewById(R.id.spinner); tv = (TextView) findViewById(R.id.tv); final Ar ...

  6. android datepicker timepicker简单用法

    1.效果图 2. xml布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...

  7. 【android】Socket简单用法

    Socket通常也称做”套接字“,用于描述IP地址和端口,废话不多说,它就是网络通信过程中端点的抽象表示.值得一提的是,Java在包java.net中提供了两个类Socket和ServerSocket ...

  8. <Android基础>(三) UI开发 Part 2 ListView

    ListView 1)ListView的简单用法 2)定制ListView界面 3)提升ListView的运行效率 4)ListView的点击事件 3.5 ListView 3.5.1 ListVie ...

  9. Android入门(五)UI-单位与尺寸、ListView

    原文链接:http://www.orlion.ga/453/ 一.单位与尺寸 布局文件中一共有以下单位供选择:px,pt,dp,sp px:是像素,屏幕中可见的最小元素单位. pt:是磅,1磅等于1/ ...

随机推荐

  1. BUPT 2012复试机考 1T

    题目描述 大家都知道,数据在计算机里中存储是以二进制的形式存储的. 有一天,小明学了C语言之后,他想知道一个类型为unsigned int 类型的数字,存储在计算机中的二进制串是什么样子的. 你能帮帮 ...

  2. People seldom do what they believe in. They do what is convenient, then repent.

    People seldom do what they believe in. They do what is convenient, then repent. 人们很少真正实践他们的理想.他们只做比较 ...

  3. 哈理工2015 暑假训练赛 zoj 2976 Light Bulbs

    MS    Memory Limit:65536KB    64bit IO Format:%lld & %llu SubmitStatusid=14946">Practice ...

  4. firebug console说明

    控制台(Console)是Firebug的第一个面板,也是最重要的面板,主要作用是显示网页加载过程中产生各类信息. 一.显示信息的命令 Firebug内置一个console对象,提供5种方法,用来显示 ...

  5. MaterialImageLoading

    https://github.com/eltld/MaterialImageLoading

  6. c++ string 之 find_first_not_of 源码

    一:实现之前先说一所find_first_not_of姊妹函数() (1)find_first_of(string &str, size_type index = 0):(find_first ...

  7. ditaa - 把ascii图形转成图片

    ditaa ditaa是一个把ascii图形转成图片的工具. 在查看zguide时看到这个文档是用gitdown生成的.zguide文档格式排版非常不错,以后要抽时间好好学习一下. 每章写一个txt文 ...

  8. appium安装报错但运行成功

    npm install -g  appium ERR! fetch failed https://registry.npmjs.org/appium-uiauto/-/appium-uiauto-1. ...

  9. Windows 8实用窍门系列:20.Windows 8中的GridView使用(二)和DataTemplateSelector

    在本文中所讲述内容的实例仍然沿用于上篇文章,有什么疑惑可以参考上篇文章. 一 GroupStyle 在GridView控件中我们可以对数据进行分组显示,通过对GridView的GroupStyle进行 ...

  10. 如何使用CSS3 @font-face

    @font-face是CSS3中的一个模块,他主要是把自己定义的Web字体嵌入到你的网页中,随着@font-face模块的出现,我们在Web的开发中使用字体不怕只能使用Web安全字体,你们当中或许有许 ...