`
xyz_lmn
  • 浏览: 65399 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Android UI开发第五篇——自定义列表

 
阅读更多

自定义列表,设置列表背景、列表的列背景、列表的间隔线。
借鉴了一些前辈的代码。

MainActivity.class
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//绑定Layout里面的ListView
ListView list = (ListView) findViewById(R.id.ListView01);
//生成动态数组,加入数据
ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();
for(int i=0;i<5;i++)
{
if(i==0){
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemImage", R.drawable.checked);//图像资源的ID
map.put("ItemTitle", "个人信息");
map.put("LastImage", R.drawable.lastimage);
listItem.add(map);
}else if(i==1){
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemImage", R.drawable.c);//图像资源的ID
map.put("ItemTitle", "修改密码");
map.put("LastImage", R.drawable.lastimage);
listItem.add(map);
}else if(i==2){
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemImage", R.drawable.d);//图像资源的ID
map.put("ItemTitle", "网络设置");
map.put("LastImage", R.drawable.lastimage);
listItem.add(map);
}else if(i==3){
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemImage", R.drawable.d);//图像资源的ID
map.put("ItemTitle", "打印设置");
map.put("LastImage", R.drawable.lastimage);
listItem.add(map);
}else{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemImage", R.drawable.e);//图像资源的ID
map.put("ItemTitle", "返回");
map.put("LastImage", R.drawable.lastimage);
listItem.add(map);
}
}
//生成适配器的Item和动态数组对应的元素
SimpleAdapter listItemAdapter = new SimpleAdapter(this,listItem,// 数据源
R.layout.list_items,//ListItem的XML实现
//动态数组与ImageItem对应的子项
new String[] {"ItemImage","ItemTitle", "LastImage"},
//ImageItem的XML文件里面的一个ImageView,两个TextView ID
new int[] {R.id.ItemImage,R.id.ItemTitle,R.id.last}
);
//添加并且显示
list.setAdapter(listItemAdapter);
//添加点击
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
setTitle("点击第"+arg2+"个项目");
if(arg2 == 4){
MainActivity.this.finish();
}
}
});
//添加长按点击
list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
menu.setHeaderTitle("长按菜单-ContextMenu");
menu.add(0, 0, 0, "弹出长按菜单0");
menu.add(0, 1, 0, "弹出长按菜单1");
}
});
}
//长按菜单响应函数
@Override
public boolean onContextItemSelected(MenuItem item) {
setTitle("点击了长按菜单里面的第"+item.getItemId()+"个项目");
return super.onContextItemSelected(item);
}
}

main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
xmlns:android="http://schemas.android.com/apk/res/android">
<ListView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/ListView01"
android:divider="@drawable/divider_color"
android:dividerHeight="3dip"
android:cacheColorHint="#00000000"
/>
</LinearLayout>

list_item.xml
<?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"
android:background="@drawable/list_bg">
<ImageView
android:paddingTop="12dip"
android:layout_alignParentLeft="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:layout_marginTop="30px"
android:textSize="20dip"
android:paddingLeft="12dip"
android:textColor="#000000"
android:layout_width="fill_parent"
android:id="@+id/ItemTitle"
android:layout_toRightOf="@+id/ItemImage"
/>
<ImageView
android:paddingTop="12dip"
android:layout_marginTop="20px"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/last"
/>
</RelativeLayout>

/**
* @author 张兴业
* 邮箱:xy-zhang@163.com
* qq:363302850
*
*/

分享到:
评论

相关推荐

    安卓Android源码——ui开发类库示例源码.zip

    本资源“安卓Android源码——ui开发类库示例源码.zip”提供了丰富的UI开发示例,帮助开发者更好地理解和应用各种UI类库。下面,我们将详细探讨这些知识点。 1. **Android UI组件**:Android SDK包含了多种内置的UI...

    AndroidStudio————实战演练——仿美团外卖菜单

    在本项目中,"AndroidStudio————实战演练——仿美团外卖菜单"是一个专注于使用Android Studio开发的应用程序实战案例,目标是创建一个类似于美团外卖的菜单功能。这个项目涵盖了多个Android开发的关键知识点,...

    安卓Android源码——自定义本地相册的功能,可以多选图片用.zip

    在安卓开发中,自定义本地相册功能是常见的需求,特别是在涉及到用户选择多张图片的应用场景,例如社交应用、图片编辑应用等。本项目提供的源码着重于实现这样一个功能,让用户能够方便地从手机存储中选取多张图片。...

    《Android应用开发揭秘》源码——第二章

    在本压缩包中,我们聚焦于《Android应用开发揭秘》一书的第二章源码,这是一份宝贵的学习资源,适合对Android应用开发感兴趣或正在深入学习这一领域的开发者。本书旨在揭示Android应用开发的内在机制,帮助读者从...

    Google Android SDK开发范例大全——示例代码

    通过学习《Google Android SDK开发范例大全》第06章和第07章的内容,开发者不仅能掌握Android UI设计和数据管理的基本技能,还能进一步了解如何构建高效、健壮的应用,为今后的Android开发打下坚实的基础。...

    Android 3D游戏开发技术宝典 源代码1

    2. **第5章 投影及各种变换**:3D图形在屏幕上的呈现需要经过投影变换,包括正交投影和透视投影。正交投影常用于UI元素,而透视投影则用于模拟真实世界的视觉效果。此外,还包括平移、旋转和缩放等基本变换,它们在...

    android listview 高效显示网络图片,自定义listview布局

    在Android开发中,ListView是一种常用的组件,用于展示大量的数据列表。然而,当ListView中的每一项都需要显示网络图片时,如果不进行优化,可能会导致性能问题,如界面卡顿、滚动不流畅等。这个问题的解决方法是...

    安卓Android源码——HerilyAlertDialog完全自定义的Dialog.zip

    本资源“安卓Android源码——HerilyAlertDialog完全自定义的Dialog.zip”正是为了帮助开发者实现这一目标,通过源码实例展示了如何创建一个高度定制的HerilyAlertDialog。 首先,让我们了解一下Android中的Dialog。...

    Android 4.X 开发完全上手——手把手构建完整Android App范例.rar

    《Android 4.X 开发完全上手——手把手构建完整Android App范例》是一本针对初学者和进阶开发者深入浅出的Android应用开发指南。该压缩包文件包含的源代码资源,旨在帮助读者通过实践操作,理解并掌握Android 4.X...

    Android--开发--——仿美图秀秀和IOS系统的相机胶卷.rar

    在Android应用开发中,仿美图秀秀和iOS系统的相机胶卷功能是一项常见的需求,它涉及到图片选择、预览、编辑以及用户界面设计等多个方面。本文将深入探讨如何实现这样的功能,包括关键技术和最佳实践。 首先,我们...

    Android开发——从小工到专家(书签)

    安装Android Studio是Android开发的第一步。这个集成开发环境(IDE)提供了编写、调试和发布Android应用所需的工具。熟悉Gradle构建系统,理解依赖管理,以及如何配置虚拟设备或连接真实设备进行测试,都是必不可少...

    Android应用开发完全自学手册

    第5章:Android控件必知必会 这一章将深入讲解一些进阶的UI控件,如Spinner、DatePicker、TimePicker、ProgressBar等,以及自定义视图的创建。开发者将学习如何利用这些控件来增强用户交互体验。 第6章:Android...

    第一行代码Android学习练习代码3

    【压缩包子文件的文件名称列表】"DYHDM_03_00UICustomViews" 可能代表一个具体的练习项目,"DYHDM"可能是某种代码或者项目的缩写,"03"可能表示这是系列练习的第三个部分,而"00UICustomViews"则直指本次练习的核心...

    《Android移动开发案例教程》_源代码A

    2. **Chapter 02** - 可能会讲解Android用户界面(UI)设计,包括布局管理器(如LinearLayout、RelativeLayout、ConstraintLayout等)、控件(TextView、Button、EditText等)的使用,以及自定义视图的创建。...

    Android-dialog库可以在任意类内调用子线程或ui线程内均可显示

    标题提到的“Android-dialog库”是Android开发中的一个第三方库,它提供了一种灵活的方式,使得开发者能够在任意类中方便地调用Dialog,并且支持在子线程或UI线程内显示,这极大地提高了代码的可复用性和执行效率。...

    Android经典项目开发实战 PDF+源码

    《Android经典项目开发实战》是一本深度探讨Android应用开发的实战指南,包含了丰富的PDF文档教程和配套源码,旨在帮助开发者提升在Android平台上的实践能力。这本书覆盖了多个实际应用场景,从基础到高级,全面讲解...

    安卓Android源码——android-times-square 安卓Android日历部件.zip

    【标题解析】 "安卓Android源码——android-times-...通过分析这个开源项目,开发者不仅可以学习如何创建自定义的日历控件,还可以深入理解Android应用的架构和组件化开发,以及如何与其他开发者协作和贡献开源项目。

    Android程序开发——课件.rar

    在Android程序开发的世界里,开发者们使用Java或Kotlin语言,构建出丰富的移动应用程序,运行在亿万台Android设备上。本课件集是为初学者和有经验的开发者设计的一系列教学资料,旨在深入理解Android应用开发的核心...

Global site tag (gtag.js) - Google Analytics