在手机中经常有列表方式。如果Activity中只有唯一一个List(这也是通常的情况),可以继承ListActivity来实现。我们用两个例子来学习List。

List例子一:利用Android自带的List格式

步骤一:Android XML文件

ListActivity是一个全屏的list,如果我们需要定制layout,例如加上一个button之类的什么的,我们需将ListView的id设置为“@android:id/list”,我们可以同getListView来获取ListView的对象,下面是XML的例子:

.... 
<LinearLayout ...> <!-- 在这里我曾忘了设定android:orientation="vertical" ,结果无法显示第二个widget,查了我很久--> 
...<Button … /> <--在这个例子中,我们在加入了一个Button,因此采用定制Layout的方式,即设置@android:id/list  --> 
    <ListView android:id="@android:id/list"  
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:drawSelectorOnTop="false" /> 
</LinearLayout>

步骤二:源代码

1)使用String数组设置List的item内容

例如:String[] items={"One", "Two", "Three", "Four", "Five"};

2)在onCreate中将item的内容加入,使用setListAdapter并设置List的格式

setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,items));

ArrayAdapter有三个参数,第一是对象,第二是List的格式,第三个是List的内容。对于格式这个例子采用了Android自定义的几种格式,后面会具体列出。android.R.layout.simple_list_item_1是TextView的方式,采用big font,是最为常见的方式。

3)点击List的Callback方法

由于集成了ListActivity,可以直接使用回调函数onListItemClick

4)例子

public class BeginingBook extends ListActivity { 
    String[] items={"One","Two","Three","Four","Five","Six","Serven"}; 
    private Button button; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main);

setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,items)); 
        button =(Button)findViewById(R.id.chapter7); 
    } 
    public void onListItemClick(ListView parent,View v, int position, long id){ 
        button.setText(items[position]); //position是点击的item的序号,从0开始。 
    } 
}

5)不同的呈现模式

我们修改ArrayAdapter的第二个显示的模式。另外可以通过getListView()获取ListView的对象,设置ListView的一些属性,ListView的一些常用方法:setChoiceMode(),getCheckedItemPositions() 。

setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice,items)); 
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); //表明有选项,如果不设置,缺省为none,即我们点击后仍无反应

setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice ,items)); 
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); //注意,只要点击就会触发Callback,而不过是的点击后选上还是变为取消。

setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked,items)); 
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

下面,第一个图为android.R.layout.simple_list_item_1,接着依次为上面三种格式。

List例子二:自定义的List格式(来自Tutorial)

步骤一:建立一个描述list item格式的XML文件

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
           android:id="@+id/rowtv1"  
           android:layout_width="fill_parent"  
           android:layout_height="wrap_content"  
           android:padding="10dip"  
           android:textSize="16dip">  
</TextView>

步骤二:通过XML定义item

在第一个例子中,我们使用String[]来定制item。但是之前,我们也学习到,为了适合多种语言,最要这些信息都在XML文件中定义,只需更换XML文件,就可以适配不同的语言。我们在string.xml文件中增加相关的定义:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    … … 
    <string-array name="countries_arry"> 
        <item>Bharain</item> 
        <item>
Bangladesh</item> 
        <item>Barbados</item> 
        <item>Belarus</item> 
        <item>Belgium</item> 
        <item>Belize</item> 
        <item>Benin</item> 
   </string-array> 
</resources>

步骤三:源代码

public class Chapter7Test2 extends ListActivity{

public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
       String[] contries=getResources().getStringArray(R.array.countries_arry); 
        setListAdapter(new ArrayAdapter<String>(this, R.layout.chapter_7_test2_list, contries)); 
        ListView lv=getListView(); 
        lv.setTextFilterEnabled(true); 
        lv.setOnItemClickListener(new OnItemClickListener(){ 
            public void onItemClick(AdapterView<?> parent, View view, int position, long id){ 
                //Toast.makeText(Chapter7Test2.this, ((TextView) view).getText(), Toast.LENGTH_SHORT).show(); 
                Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show(); 
            } 
        });


}

Toast

  上面给出Toast的例子。Toast.makeText(对象,文本内容,格式).show()。

Activity-ListView的更多相关文章

  1. mono for android Listview 里面按钮 view Button click 注册方法 并且传值给其他Activity 主要是context

    需求:为Listview的Item里面的按钮Button添加一个事件,单击按钮时通过事件传值并跳转到新的页面. 环境:mono 效果: 布局代码 主布局 <?xml version=" ...

  2. Activity中与ListActivity中使用listview区别

    Activity中与ListActivity中使用listview区别 一.Activity中与ListActivity中使用listview区别(本身没多大区别,只是ListActivity在lis ...

  3. Android Listview

    方法一: xml文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xml ...

  4. 安卓第六天笔记--ListView

    安卓第六天笔记--ListView 1.AdapteView AdapteView 继承ViewGroup它的本质是容器 AdapterView派生了3个子类: AbsListView AbsSpin ...

  5. Android之ScrollView嵌套ListView冲突

    在ScrollView中嵌套使用ListView,ListView只会显示一行多一点.两者进行嵌套,即会发生冲突.由于ListView本身都继承于ScrollView,一旦在ScrollView中嵌套 ...

  6. Listview没有优化之前

    MainActivity.java package com.example.listviewdemo4; import java.util.ArrayList; import java.util.Ha ...

  7. ListView中EditText的数据加载错乱的问题

    我在ListView中用BaseAdapter的getView()方法加载适配器,每个Item里有一个TextView和一个EditText,当我在第一个EditText里面输入数据,比如1234时, ...

  8. 【Android】以SimpleAdapter做适配器的ListView和GridView

    SimpleAdapter介绍 SimpleAdapter是一个简单的适配器,可以将静态数据映射到XML文件中定义好的视图. 构造函数 public SimpleAdapter (Context co ...

  9. ListView多选操作模式详解CHOICE_MODE_MULTIPLE与CHOICE_MODE_MULTIPLE_MODAL

    这篇文章我们将详细的介绍如何实现ListView的多选操作,文中将会纠正在使用ListViewCHOICE_MODE_MULTIPLE或者CHOICE_MODE_MULTIPLE_MODAL时容易犯的 ...

  10. Android(java)学习笔记186:对ListView等列表组件中数据进行增、删、改操作

    1.ListView介绍 解决大量的相似的数据显示问题 采用了MVC模式: M: model (数据模型) V:  view  (显示的视图) C: controller 控制器 入门案例: acit ...

随机推荐

  1. LeetCode 102 ——二叉树的层次遍历

    1. 题目 2. 解答 定义一个存放树中数据的向量 data,一个存放树的每一层数据的向量 level_data 和一个存放每一层节点的队列 node_queue. 如果根节点非空,根节点进队,然后循 ...

  2. 七:HDFS Permissions Guide 权限

    1.权限模式     简单:启动HDFS的操作系统用户即为超级用户,可以通过HADOOP_USER_NAME指定     kerberos: 2.group mapping      组列表由grou ...

  3. zookeeper:一.zookeeper集群安装

    1.zookeeper简介2.安装zookeeper2.1 安装环境准备2.2 安装zookeeper2.2.1.解压zookeeper压缩包到/opt/zookeeper2.2.2.编辑zookee ...

  4. 阿里校招内推C++岗位编程题第一题 空格最少的字符串

    给定一个字符串S和有效单词的字典D,请确定可以插入到S中的最小空格数,使得最终的字符串完全由D中的有效单词组成.并输出解. 如果没有解则应该输出n/a 例如: 输入: S = “ilikealibab ...

  5. lintcode-151-买卖股票的最佳时机 III

    151-买卖股票的最佳时机 III 假设你有一个数组,它的第i个元素是一支给定的股票在第i天的价格.设计一个算法来找到最大的利润.你最多可以完成两笔交易. 注意事项 你不可以同时参与多笔交易(你必须在 ...

  6. Swift-重写(Override)

    子类可以为继承来的实例方法(instance method),类方法(class method),实例属性(instance property),或附属脚本(subscript)提供自己定制的实现(i ...

  7. <Android>资源的访问,颜色、字符串、尺寸、XML、DRAWABLES资源分使用

    1.资源的访问 代码中使用Context的getResources()方法得到Resources对象,访问自己定义的资源R.资源文件类型.资源文件名称,访问系统定义的资源android.R. 资源文件 ...

  8. ejabberd学习1

    ejabberd是XMPP协议的一个实现,对大家的另一个意义就是,可以通过ejabberd来学习erlang. 1.从源码安装ejabberd. 可以参考ejabberd 简明配置.这个博文包括了安装 ...

  9. 【week6】约跑App视频链接

    约跑视频链接发布在优酷,链接如下: http://v.youku.com/v_show/id_XMTc3NTcyNTcyNA==.html 秒拍视频连接: http://www.miaopai.com ...

  10. 多个表单数据提交下的serialize()应用

    在实际开发场景中,难免遇到需要多个表单的数据传递问题. 之所以要进行多表单的数据传递是因为可以进行数据分组,便于数据的维护. 这个时候,出于不依赖jquery的考虑,有一个原生js函数来解决这个问题无 ...