ListView、ListActivity

==>

ListView以垂直列表的形式显示所有列表项。

创建ListView的方式:

  1.直接使用ListView创建

  2.Activity继承ListAcivity

ListView与AutoCompleteTextView、Spinner类似,都需要一个供显示的列表项——Adapter

都是采用Adapter提供数据设计——MVC的典范应用,此时的 ListView与AutoCompleteTextView、Spinner只是View部分(实际还包括Controller),它们只负责显示和更新,而显示的数据则由Model(Adapter)提供。

ListView常用属性==》

android:choiceMode 设置ListView的选择行为
android:divider 设置ListView列表项的分隔条(可用颜色/Drawable分隔)
android:dividerHeight 设置分隔条的高度
android:entries 指定一个数组资源,android将根据该数组资源来生成ListView
android:footerDividersEnabled  false,表示不在footer View之前绘制分隔符
android:headerDividersEnabled false,表示不在header View之后绘制分隔符

实例一

布局文件==》
<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"
tools:context=".MainActivity" > <!-- 直接使用数组资源给出列表项 --> <ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@drawable/title_stripe"
android:entries="@array/books" />
<!-- 使用ArrayAdapter提供的列表项ListView --> <ListView
android:id="@+id/lvText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@drawable/title_stripe" /> </LinearLayout> 注意title_stripe为图片资源——略. 资源文件==》arrays.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="books">
<item>Java高级编程</item>
<item>C#高级编程</item>
<item>SQL高级编程</item>
</string-array>
</resources> 代码实现==>
package com.example.mylistview; import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView; public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); // 使用Adapter方式实现ListView
ListView lvText = (ListView) this.findViewById(R.id.lvText);
String[] peoples =
{ "孙阳", "丁宁", "林丹" };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, peoples);
lvText.setAdapter(adapter);
} @Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }

运行效果:

创建ArrayAdapter必须指定一个textViewResourceId,该参数决定每个列表项的外观形象。

android为该属性提供了如下属性值:

simple_list_item_1 每个列表项都是一个普通的TextView
simple_list_item_2 每个列表项都是一个普通的TextView——字体略大
simple_list_item_checked 每个列表项都是一个已勾选的列表项
simple_list_item_multiple_choice 每个列表项都是带多选框的文本
simple_list_item_single_choice 每个列表项都是带单选按钮的文本

注意:

  如果需要显示复杂的列表项,可进行自定义Adapter的开发——需继承BaseAdapter,重写getView方法即可作为列表的列表项——可参考学习笔记六——Spinner总结。

实例二

布局文件==》
<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"
tools:context=".MainActivity" > <ListView
android:id="@+id/lvTest"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> <ImageView
android:id="@+id/header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dp" /> <TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:paddingLeft="10dp" /> </LinearLayout>
资源文件==》图片,略 代码实现==》
package com.example.mylisview2; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ListView;
import android.widget.SimpleAdapter; public class MainActivity extends Activity
{
private String[] Peoples =
{ "孙阳", "丁宁", "林丹" };
private int[] Images =
{ R.drawable.one, R.drawable.three, R.drawable.two }; @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
for (int i = 0; i < Peoples.length; i++)
{
Map<String, Object> item = new HashMap<String, Object>();
item.put("header", Images[i]);
item.put("name", Peoples[i]); list.add(item);
} SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.activity_main, new String[]
{ "name", "header" }, new int[]
{ R.id.name, R.id.header }); ListView lv = (ListView) this.findViewById(R.id.lvTest);
lv.setAdapter(adapter);
} @Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }

运行效果:

注意:

第一个参数是context,即当前的Activity;

第二个参数是要去填充ListView每一行内容的list;

第三个参数resource是ListView每一行填充的布局文件;

第四个参数String[] from表示名字数组,因为在ArrayList存放的都是Map<String,Object>的item,from中的名字就是为了索引ArrayList中的Object;

第五个参数在构造函数中表示为int[] to,是索引layout中的id,对应前面每项的布局格式;

ListActivity

==>

如果程序的窗口仅仅需要显示一个列表,则可直接让Activity继承ListActivity来实现。

ListActivity的子类无须调用setContentView()显示某个界面,而是可直接传人一个Adapter——ListActivity的子类就呈现出一个列表。

实例如下:

实现代码==》
package com.example.mylistview3; import android.os.Bundle;
import android.app.Activity;
import android.app.ListActivity;
import android.view.Menu;
import android.widget.ArrayAdapter; public class MainActivity extends ListActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
String[] arrys =
{ "孙阳", "丁宁", "林丹" }; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_single_choice, arrys);
setListAdapter(adapter);
} @Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }

注意:

  ListActivity的子类无须调用setContentView()显示某个界面......,ListActivity的默认布局是一个位于屏幕中心的列表组成的;

开发者也可以通过onCreate()中的setContentView()设置用户的自定义布局——采用该种方式,需要在布局文件中添加一个ListView,用于操作(需要指定id....属性)。

实现效果如下:

android学习笔记12——ListView、ListActivity的更多相关文章

  1. Android学习笔记之ListView复用机制

    PS:满打满算,差不多三个月没写博客了...前一阵忙的不可开交...总算是可以抽出时间研究研究其他事情了... 学习内容: 1.ListView的复用机制 2.ViewHolder的概念 1.List ...

  2. Android学习笔记:ListView简单应用--显示文字列表

    在activity中的编写如下代码: final List<String> items = new ArrayList<String>(); //设置要显示的数据,这里因为是例 ...

  3. [Android学习笔记]使用ListView

    简单使用ListView 关键在于Adatper Adatper用来连接UI与数据源.Adapter既负责提供数据,又负责创建Item视图. 一般步骤: 1.创建list_item.xml,用来创建L ...

  4. Android学习笔记12:图像渲染(Shader)

    在Android中,提供了Shader类专门用来渲染图像以及一些几何图形. Shader类包括了5个直接子类,分别为:BitmapShader.ComposeShader.LinearGradient ...

  5. 【转】 Pro Android学习笔记(十九):用户界面和控制(7):ListView

    目录(?)[-] 点击List的item触发 添加其他控件以及获取item数据 ListView控件以垂直布局方式显示子view.系统的android.app.ListActivity已经实现了一个只 ...

  6. 【转】 Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner

    目录(?)[-] GridView Spinner GridView GridView是网格状布局,如图所示.在了解ListView后,很容易了解GridView.下面是例子的XML文件. <? ...

  7. Android学习笔记之JSON数据解析

    转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...

  8. Android学习笔记36:使用SQLite方式存储数据

    在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...

  9. 【转】Pro Android学习笔记(二五):用户界面和控制(13):LinearLayout和TableLayout

    目录(?)[-] 布局Layout 线性布局LinearLayout 表格布局TableLayout 布局Layout Layout是容器,用于对所包含的view进行布局.layout是view的子类 ...

随机推荐

  1. vim 把满足条件的数字进行加上一些数字

    1,1,1,n4s-1 1,3,4,n3s= 1,4,6,e4h= 1,5,8,e4h-1 1,6,2,e3ntx-2 1,7,5,n1s+2 1,8,7,n3s=   比如以上的数据格式以“,”为列 ...

  2. 15. 3Sum

    Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all un ...

  3. ZOJ 1089 Lotto

    原题链接 题目大意:有一种抽奖游戏乐透(Lotto),规则是从1到49这49个自然数中随机抽取6个数.现在有一种简化版的游戏,先在49个数里面选出k(6<k<13)个数,然后再从这k个数里 ...

  4. 在web.xml中配置error-page

    在web.xml中配置error-page 在web.xml中有两种配置error-page的方法,一是通过错误码来配置,而是通过异常的类型来配置,分别举例如下: 一.   通过错误码来配置error ...

  5. Python学习(2)——编码

    今天写了个程序但是在DOS窗口和IDEL窗口调试的结果不一样,有些郁闷~ #!/usr/bin/env python #coding=utf-8 #python version:2.7.3 #syst ...

  6. Java 控制反转和依赖注入模式【翻译】【整理】

    Inversion of Control Containers and the Dependency Injection pattern --Martin Fowler 本文内容 Component ...

  7. HttpWebRequest's Timeout and ReadWriteTimeout — What do these mean for the underlying TCP connection?

    http://stackoverflow.com/questions/7250983/httpwebrequests-timeout-and-readwritetimeout-what-do-thes ...

  8. sql commands

    1,DBCC SQLPERF(logspace) https://msdn.microsoft.com/en-us/library/ms189768.aspx 2, 1, LOGINFO(''HAHA ...

  9. PHP-通过strace定位故障原因

    俗话说:不怕贼偷,就怕贼惦记着.在面对故障的时候,我也有类似的感觉:不怕出故障,就怕你不知道故障的原因,故障却隔三差五的找上门来. 十一长假还没结束,服务器却频现高负载,Nginx出现错误日志: co ...

  10. [Programming Entity Framework] 第3章 查询实体数据模型(EDM)(一)

    http://www.cnblogs.com/sansi/archive/2012/10/18/2729337.html Programming Entity Framework 第二版翻译索引 你可 ...