android用户界面-组件Widget-列表视图ListView

简介:

ListView是比较常用的控件

程序效果是实现一个ListView,ListView里面有标题,内容和图片,并加入点击和长按响应。

列表的显示需要三个元素:

1.ListVeiw 用来展示列表的View。

2.适配器 用来把数据映射到ListView上的中介。

3.数据 具体的将被映射的字符串,图片,或者基本组件。

根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter

 

SimpleAdapter的例子如下:

首先在xml里面定义一个ListView

 

 
  1. 1.<?xml version="1.0" encoding="utf-8"?>    
  2.  2. <LinearLayout      
  3.  3.    android:id="@+id/LinearLayout01"      
  4.  4.    android:layout_width="fill_parent"      
  5.  5.    android:layout_height="fill_parent"      
  6.  6.    xmlns:android="http://schemas.android.com/apk/res/android">    
  7.  7. <ListView android:layout_width="wrap_content"      
  8.  8.          android:layout_height="wrap_content"      
  9.  9.          android:id="@+id/ListView01"    
  10.  10.          />    
  11.  11. </LinearLayout>    
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
	android:id="@+id/LinearLayout01" 
	android:layout_width="fill_parent" 
	android:layout_height="fill_parent" 
	xmlns:android="http://schemas.android.com/apk/res/android">
<ListView android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:id="@+id/ListView01"
          />
</LinearLayout>

 

定义ListView每个条目的Layout,用RelativeLayout实现:

 

 
  1. 1.<?xml version="1.0" encoding="utf-8"?>    
  2.  2.<RelativeLayout      
  3.  3.    android:id="@+id/RelativeLayout01"      
  4.  4.    android:layout_width="fill_parent"      
  5.  5.    xmlns:android="http://schemas.android.com/apk/res/android"      
  6.  6.    android:layout_height="wrap_content"      
  7.  7.    android:paddingBottom="4dip"      
  8.  8.    android:paddingLeft="12dip"    
  9.  9.    android:paddingRight="12dip">    
  10.  10.<ImageView      
  11.  11.    android:paddingTop="12dip"    
  12.  12.    android:layout_alignParentRight="true"    
  13.  13.    android:layout_width="wrap_content"      
  14.  14.    android:layout_height="wrap_content"      
  15.  15.    android:id="@+id/ItemImage"    
  16.  16.    />      
  17.  17.<TextView      
  18.  18.    android:text="TextView01"      
  19.  19.    android:layout_height="wrap_content"      
  20.  20.    android:textSize="20dip"      
  21.  21.    android:layout_width="fill_parent"      
  22.  22.    android:id="@+id/ItemTitle"    
  23.  23.    />    
  24.  24.<TextView      
  25.  25.    android:text="TextView02"      
  26.  26.    android:layout_height="wrap_content"      
  27.  27.    android:layout_width="fill_parent"      
  28.  28.    android:layout_below="@+id/ItemTitle"      
  29.  29.    android:id="@+id/ItemText"    
  30.  30.    />    
  31.  31.</RelativeLayout>    
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
	android:id="@+id/RelativeLayout01" 
	android:layout_width="fill_parent" 
	xmlns:android="http://schemas.android.com/apk/res/android" 
	android:layout_height="wrap_content" 
	android:paddingBottom="4dip" 
	android:paddingLeft="12dip"
	android:paddingRight="12dip">
<ImageView 
	android:paddingTop="12dip"
	android:layout_alignParentRight="true"
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content" 
	android:id="@+id/ItemImage"
	/> 
<TextView 
    android:text="TextView01" 
    android:layout_height="wrap_content" 
    android:textSize="20dip" 
    android:layout_width="fill_parent" 
    android:id="@+id/ItemTitle"
    />
<TextView 
	android:text="TextView02" 
	android:layout_height="wrap_content" 
	android:layout_width="fill_parent" 
	android:layout_below="@+id/ItemTitle" 
	android:id="@+id/ItemText"
	/>
</RelativeLayout>

 

最后在Activity里面调用和加入Listener,具体见注释:

 

 
  1. 1.package com.ray.test;     
  2.  2.    
  3.  3.import java.util.ArrayList;     
  4.  4.import java.util.HashMap;     
  5.  5.    
  6.  6.import android.app.Activity;     
  7.  7.import android.os.Bundle;     
  8.  8.import android.view.ContextMenu;     
  9.  9.import android.view.MenuItem;     
  10.  10.import android.view.View;     
  11.  11.import android.view.ContextMenu.ContextMenuInfo;     
  12.  12.import android.view.View.OnCreateContextMenuListener;     
  13.  13.import android.widget.AdapterView;     
  14.  14.import android.widget.ListView;     
  15.  15.import android.widget.SimpleAdapter;     
  16.  16.import android.widget.AdapterView.OnItemClickListener;     
  17.  17.    
  18.  18.public class TestListView extends Activity {     
  19.  19.    @Override    
  20.  20.    public void onCreate(Bundle savedInstanceState) {     
  21.  21.        super.onCreate(savedInstanceState);     
  22.  22.        setContentView(R.layout.main);     
  23.  23.        //绑定Layout里面的ListView     
  24.  24.        ListView list = (ListView) findViewById(R.id.ListView01);     
  25.  25.             
  26.  26.        //生成动态数组,加入数据     
  27.  27.        ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();     
  28.  28.        for(int i=0;i<10;i++)     
  29.  29.        {     
  30.  30.            HashMap<String, Object> map = new HashMap<String, Object>();     
  31.  31.            map.put("ItemImage", R.drawable.checked);//图像资源的ID     
  32.  32.            map.put("ItemTitle""Level "+i);     
  33.  33.            map.put("ItemText""Finished in 1 Min 54 Secs, 70 Moves! ");     
  34.  34.            listItem.add(map);     
  35.  35.        }     
  36.  36.        //生成适配器的Item和动态数组对应的元素     
  37.  37.        SimpleAdapter listItemAdapter = new SimpleAdapter(this,listItem,//数据源      
  38.  38.            R.layout.list_items,//ListItem的XML实现     
  39.  39.            //动态数组与ImageItem对应的子项             
  40.  40.            new String[] {"ItemImage","ItemTitle""ItemText"},      
  41.  41.            //ImageItem的XML文件里面的一个ImageView,两个TextView ID     
  42.  42.            new int[] {R.id.ItemImage,R.id.ItemTitle,R.id.ItemText}     
  43.  43.        );     
  44.  44.            
  45.  45.        //添加并且显示     
  46.  46.        list.setAdapter(listItemAdapter);     
  47.  47.             
  48.  48.        //添加点击     
  49.  49.        list.setOnItemClickListener(new OnItemClickListener() {     
  50.  50.    
  51.  51.            @Override    
  52.  52.            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,     
  53.  53.                    long arg3) {     
  54.  54.                setTitle("点击第"+arg2+"个项目");     
  55.  55.            }     
  56.  56.        });     
  57.  57.             
  58.  58.      //添加长按点击     
  59.  59.        list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {     
  60.  60.                 
  61.  61.            @Override    
  62.  62.            public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {     
  63.  63.                menu.setHeaderTitle("长按菜单-ContextMenu");        
  64.  64.                menu.add(000"弹出长按菜单0");     
  65.  65.                menu.add(010"弹出长按菜单1");        
  66.  66.            }     
  67.  67.        });      
  68.  68.    }     
  69.  69.         
  70.  70.    //长按菜单响应函数     
  71.  71.    @Override    
  72.  72.    public boolean onContextItemSelected(MenuItem item) {     
  73.  73.        setTitle("点击了长按菜单里面的第"+item.getItemId()+"个项目");      
  74.  74.        return super.onContextItemSelected(item);     
  75.  75.    }     
  76.  76.}    

本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1080693
相关文章
|
10月前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
10月前
|
缓存 前端开发 Android开发
安卓开发中的自定义视图:从零到英雄
【10月更文挑战第42天】 在安卓的世界里,自定义视图是一块画布,让开发者能够绘制出独一无二的界面体验。本文将带你走进自定义视图的大门,通过深入浅出的方式,让你从零基础到能够独立设计并实现复杂的自定义组件。我们将探索自定义视图的核心概念、实现步骤,以及如何优化你的视图以提高性能和兼容性。准备好了吗?让我们开始这段创造性的旅程吧!
146 1
|
11月前
|
Android开发 开发者
安卓应用开发中的自定义视图
【9月更文挑战第37天】在安卓开发的海洋中,自定义视图犹如一座座小岛,等待着勇敢的探索者去发现其独特之处。本文将带领你踏上这段旅程,从浅滩走向深海,逐步揭开自定义视图的神秘面纱。
87 3
|
11月前
|
存储 Android开发 开发者
深入理解安卓应用开发的核心组件
【10月更文挑战第8天】探索Android应用开发的精髓,本文带你了解安卓核心组件的奥秘,包括Activity、Service、BroadcastReceiver和ContentProvider。我们将通过代码示例,揭示这些组件如何协同工作,构建出功能强大且响应迅速的应用程序。无论你是初学者还是资深开发者,这篇文章都将为你提供新的视角和深度知识。
|
11月前
|
数据可视化 Android开发 开发者
安卓应用开发中的自定义View组件
【10月更文挑战第5天】在安卓应用开发中,自定义View组件是提升用户交互体验的利器。本篇将深入探讨如何从零开始创建自定义View,包括设计理念、实现步骤以及性能优化技巧,帮助开发者打造流畅且富有创意的用户界面。
308 0
|
7月前
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
166 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
9月前
|
存储 监控 API
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
840 11
|
9月前
|
XML 搜索推荐 前端开发
安卓开发中的自定义视图:打造个性化UI组件
在安卓应用开发中,自定义视图是一种强大的工具,它允许开发者创造独一无二的用户界面元素,从而提升应用的外观和用户体验。本文将通过一个简单的自定义视图示例,引导你了解如何在安卓项目中实现自定义组件,并探讨其背后的技术原理。我们将从基础的View类讲起,逐步深入到绘图、事件处理以及性能优化等方面。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。
|
10月前
|
搜索推荐 前端开发 Android开发
安卓应用开发中的自定义视图实现
【10月更文挑战第30天】在安卓开发的海洋中,自定义视图是那抹不可或缺的亮色,它为应用界面的个性化和交互体验的提升提供了无限可能。本文将深入探讨如何在安卓平台创建自定义视图,并展示如何通过代码实现这一过程。我们将从基础出发,逐步引导你理解自定义视图的核心概念,然后通过一个实际的代码示例,详细讲解如何将理论应用于实践,最终实现一个美观且具有良好用户体验的自定义控件。无论你是想提高自己的开发技能,还是仅仅出于对安卓开发的兴趣,这篇文章都将为你提供价值。
122 4
|
11月前
|
XML 前端开发 Java
安卓应用开发中的自定义View组件
【10月更文挑战第5天】自定义View是安卓应用开发的一块基石,它为开发者提供了无限的可能。通过掌握其原理和实现方法,可以创造出既美观又实用的用户界面。本文将引导你了解自定义View的创建过程,包括绘制技巧、事件处理以及性能优化等关键步骤。