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
相关文章
|
3月前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
4月前
|
存储 Android开发 开发者
深入理解安卓应用开发的核心组件
【10月更文挑战第8天】探索Android应用开发的精髓,本文带你了解安卓核心组件的奥秘,包括Activity、Service、BroadcastReceiver和ContentProvider。我们将通过代码示例,揭示这些组件如何协同工作,构建出功能强大且响应迅速的应用程序。无论你是初学者还是资深开发者,这篇文章都将为你提供新的视角和深度知识。
|
4月前
|
数据可视化 Android开发 开发者
安卓应用开发中的自定义View组件
【10月更文挑战第5天】在安卓应用开发中,自定义View组件是提升用户交互体验的利器。本篇将深入探讨如何从零开始创建自定义View,包括设计理念、实现步骤以及性能优化技巧,帮助开发者打造流畅且富有创意的用户界面。
150 0
|
2月前
|
搜索推荐 前端开发 API
探索安卓开发中的自定义视图:打造个性化用户界面
在安卓应用开发的广阔天地中,自定义视图是一块神奇的画布,让开发者能够突破标准控件的限制,绘制出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战技巧,逐步揭示如何在安卓平台上创建和运用自定义视图来提升用户体验。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开新的视野,让你的应用在众多同质化产品中脱颖而出。
77 19
|
2月前
|
XML 搜索推荐 前端开发
安卓开发中的自定义视图:打造个性化UI组件
在安卓应用开发中,自定义视图是一种强大的工具,它允许开发者创造独一无二的用户界面元素,从而提升应用的外观和用户体验。本文将通过一个简单的自定义视图示例,引导你了解如何在安卓项目中实现自定义组件,并探讨其背后的技术原理。我们将从基础的View类讲起,逐步深入到绘图、事件处理以及性能优化等方面。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。
|
3月前
|
搜索推荐 前端开发 Android开发
安卓开发中的自定义视图——打造个性化用户界面
在安卓应用开发的广阔天地里,自定义视图是实现个性化界面设计的重要手段。通过深入理解安卓绘图基础、触摸事件处理和布局机制,开发者可以突破标准控件的限制,创造出独一无二的用户体验。本文将引导你探索自定义视图的核心概念,提供实用的代码示例,并分享如何有效地解决开发过程中可能遇到的挑战。无论你是初学者还是有经验的开发者,这篇文章都将为你打开一扇通往创新和个性化的大门。
|
3月前
|
搜索推荐 Android开发 UED
安卓开发中的自定义视图:打造个性化用户界面
【10月更文挑战第22天】在安卓应用的海洋中,如何让你的应用脱颖而出?一个独特且直观的用户界面(UI)至关重要。本文将引导你通过自定义视图来打造个性化的用户体验,从基础的视图绘制到触摸事件的处理,我们将一步步深入探讨。准备好了吗?让我们开始吧!
|
XML Android开发 数据格式
Android官方开发文档Training系列课程中文版:构建第一款安卓应用之创建用户界面
原文地址:http://android.xsoftlab.net/training/basics/firstapp/building-ui.html 在这节课中,你会创建一个xml的布局文件,它包含一个Text成员和一个Button成员。
943 0
|
12天前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
100 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
10天前
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
30 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex

热门文章

最新文章

  • 1
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
  • 2
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
  • 4
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 5
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
  • 6
    【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 7
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 8
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
  • 9
    android之ListView和SimpleAdapter的组合使用
  • 10
    安卓逆向系列教程 4.1 字符串资源
  • 1
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    50
  • 2
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    30
  • 3
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    70
  • 4
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    100
  • 5
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
    29
  • 6
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
    249
  • 7
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
    67
  • 8
    【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
    36
  • 9
    【03】优雅草央千澈详解关于APP签名以及分发-上架完整流程-第三篇安卓APP上架华为商店后面的步骤-华为应用商店相对比较麻烦一些-华为商店安卓上架
    53
  • 10
    app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
    86