列表控件ListView和适配器Adapter

转载 2015年11月18日 10:28:16

学习笔记


一个ListView通常有两个职责:

(1)将数据填充到布局

(2)处理用户的选择点击等操作

一个ListView创建需要3个元素:

(1)ListView中每一列的View;(2)填入View的数据或图片等;(3)链接数据与ListView的适配器。

适配器是一个链接数据和AdapterView(ListView就是一个典型的AdapterView)的桥梁,通过它能够有效地实现数据与 AdapterView的分离设置,使AdapterView与数据的绑定更加简便,修改更加方便。这也是Android完全遵循MVC设计模式的体现。


Android提供很多的Adapter,列出常用几个:

ArrayAdapter(T)--------------------------------------------------------用来绑定一个数组,支持泛型操作

SimpleAdapter---------------------------------------------------------用来绑定在XML中定义的控件对应的数据

SimpleCursorAdapter-----------------------------------------------用来绑定游标得到的数据

BaseAdapter-----------------------------------------------------------通用的基础适配器




1.ListView使用ArrayAdapter

用ArrayAdapter可以实现简单的ListView的数据绑定。默认情况下,ArrayAdapter绑定每个对象的toString值到layout中预先定义的TextView空间上。ArrayAdapter的使用如下:

在布局文件中加入一个ListView控件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:background="@drawable/hua">
<ListView
         android:id="@+id/lvcategory"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginLeft="20dp"
         android:layout_marginRight="20dp"
         >
      </ListView>    

</LinearLayout>

对应的activity:

package com.androidhomework.caipu;

import java.util.ArrayList;
import java.util.HashMap;

import android.app.Activity;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

/*
1.定义一个数组来存放ListView中item内容;
2.通过实现ArrayAdapter的构造函数来创建一个ArrayAdapter的对象
3.通过ListView的setAdapter()方法绑定ArrayAdapter.*/

public class CategoryActivity extends Activity{
	private static final String[] strs = new String[]{
			"家常菜","汤粥","面食","甜点","小吃","海鲜"
	};
	private ListView lvcategory;
	
	@Override
	public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.category_activity);
		
		lvcategory=(ListView)findViewById(R.id.lvcategory);//得到ListView对象的引用
		
		/*为ListView设置Adapter来绑定数据*/
		lvcategory.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,strs));
		
	}
 }


使用步骤:
1.定义一个数组来存放ListView中item内容;
2.通过实现ArrayAdapter的构造函数来创建一个ArrayAdapter的对象
3.通过ListView的setAdapter()方法绑定ArrayAdapter

其中,第2步,ArrayAdapter有多个构造函数,例子中是最常用的一种。   第一个参数为上下文,第二个参数为一个包含TextView,用来填充ListView的每一行的布局资源ID,第三个参数为ListView的内容。其中,第二个参数可以自定义一个layout,但是这个layout必须要有TextView控件。:

a.通过指定android.R.layout.simple_list_item_checked,实现带选择框的ListView。需要用setChoiceMode()方法设定选择为单选还是多选。

代码:lvcategory.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_checked,strs));

         lvcategory.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

b.通过指定android.R.layout.simple_list_item_multiple_choice这个资源实现带CheckBox的ListView。同样的,需要用setChoiceMode()方法来设置单选还是多选

代码:

         lvcategory.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,strs));

         lvcategory.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

c.通过指定android.R.layout.simple_list_item_single_choice这个资源实现带RadioButton的ListView。这里并不是指定了单选,多选单选还需要通过setChoiceMode(方法来制定

lvcategory.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_single_choice,strs));

         lvcategory.setChoiceMode(ListView.CHOICE_MODE_SINGLE);



相关文章推荐

Android开发适配器系列:Spinner绑定ArrayAdapter适配器

1、什么是Spinner Spinners 提供了一个快速的方式从一个集合中选择一个选项,默认情况Spinner显示当前选中的值,我们也可以通过spinner.setSelection(positio...

列表(ListView)控件和适配器的用法

呵呵今天学习列表控件跟大家分享一下,希望对大家有用,写不好或者不足点请大家提出宝贵的意见,谢谢 常用的适配器 如下以实例跟大家一起学习 1、使用ArrayAdapter适配器       ...

Adapter类型控件之ListView(列表控件)

(一)概述 Android中的列表控件飞创灵活,可以自定义每一个列表项,实际上每一个列表项就是一个View,在Android定义了3个列表控件:ListView、ExpandableListView...

ListView视图列表控件

  • 2014年08月27日 13:48
  • 4KB
  • 下载

ListView下拉列表控件

ListView列表控件 列表的显示需要三个元素: view 用来显示数据的view 适配器 用来把数据映射到view的中介 数据 具体的将被映射的字符串,图片,或者基本组件案例...

ListView,GridView等列表控件中CountDownTimer的应用

ListView,GridView等列表控件中批量进行CountDownTimer操作 对于CountDownTimer的使用都比较熟悉了。 但是让CountDownTimer团队协助的时候,感觉就有...

Adroid ListView,GridvVew等列表控件如何只更新指定条目

很多时候,我们都有这样的一个功能需求就是我们的及时geng'xList

【Visual Basic】列表控件ListView的增删改查、模态对话框、禁止窗口调整大小

列表控件ListView是窗体中核心组件之一,在各种窗体程序得到广泛应用。在《【mfc】学生信息管理,实现List控件节点的增删改查》(点击打开链接)中极其难以实现列表控件ListView的增删改查,...

Android ListView 列表控件的简单使用

ListView 列表是我们经常会使用的控件, 如果想要自定义里面的显示的话是挺麻烦的, 需要新建XML、Class SimpleAdapter这两个文件, 较为麻烦。 如果我们只是想显示两、三行文字...
  • mixer_a
  • mixer_a
  • 2012年05月10日 22:08
  • 372

[Android] ListView (普通列表控件) 的基本使用方法

在Android中,ListView控件用于以列表的形式显示数据,采用MVC模式将前端显示与后端数据进行分离。如下图所示,ListView控件并不直接使用数据,而是间接通过Adapter对象。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:列表控件ListView和适配器Adapter
举报原因:
原因补充:

(最多只允许输入30个字)