`
huangbq
  • 浏览: 30439 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

ListView初体验

阅读更多

初学android,感觉ListView是一个经常用到的控件,ListView的实现感觉相当的麻烦,对于初学者,对于很好的实现ListView感觉很茫然,从初学者的视角,参考网络上的一些关于ListView的例子,(这里特别感谢Ray's blog 网址:http://rayleung.iteye.com/,在他的博客中学到很多东西。),加上自己作为初学者的一些简单总结,完成本文,希望对初学者有所帮助。 这里先说说ListView的实现: ListView里面的每个子项Item可以使一个字符串,也可以是一个组合控件。 实现步骤: 1.准备ListView要显示的数据 ; 2.使用 一维或多维 动态数组 保存数据; 3.构建适配器 , 简单地来说, 适配器就是 Item数组 , 动态数组 有多少元素就生成多少个Item; 3.把 适配器 添加到ListView,并显示出来。 该程序效果是实现一个ListView,ListView里面有标题,内容和图片,并加入点击和长按响应。 接下来,看看本文代码所实现的ListView:

1.首先在xml里面定义一个listview.xml文件

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent" >

    <TextView  

             android:layout_width="fill_parent"

             android:layout_height="wrap_content" 

             android:text="@string/listview"/>

 

   <ListView android:id="@+id/listview"

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            >

   </ListView>    

</LinearLayout> 

2.定义ListView每个条目的Layout,listview_items.xml的代码如下,listview_items.xml用于设计ListView的Item:

<?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>

 3.最后就是JAVA的源代码:ListViewActivity类

package com.google.android.test;

 

import java.util.ArrayList;

import java.util.HashMap;

 

import android.app.Activity;

import android.os.Bundle;

import android.view.ContextMenu;

import android.view.View;

import android.view.MenuItem;

import android.view.ContextMenu.ContextMenuInfo;

import android.view.View.OnCreateContextMenuListener;

import android.widget.AdapterView;

import android.widget.ListView;

import android.widget.SimpleAdapter;

import android.widget.AdapterView.OnItemClickListener;

 

public class ListViewActivity extends Activity {

@Override

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.listview);

//绑定layout里面的ListView

ListView list=(ListView)findViewById(R.id.listview);

//生成动态数组,加入数据 

ArrayList<HashMap<String, Object>> listItem=new ArrayList<HashMap<String, Object>>();

for(int i=0;i<10;i++){

HashMap<String, Object> map=new HashMap<String, Object>();

map.put("ItemImage", R.drawable.icon);//图像资源的ID

map.put("ItemTitle", "第"+i+"项,可以把它当做标题");

map.put("ItemText", "这里是我的"+i+"项的内容,可以写入你的内容!");

listItem.add(map);

}

//生成适配器的Item和动态数组对应的元素

SimpleAdapter listItemAdapter=new SimpleAdapter(ListViewActivity.this,

//数据源 

listItem,

///ListItem的XML实现  

R.layout.listview_items,

//动态数组与ImageItem对应的子项 

new String[]{"ItemImage","ItemTitle","ItemText"},

//ImageItem的XML文件里面的一个ImageView,两个TextView ID  

new int[] {R.id.ItemImage,R.id.ItemTitle,R.id.ItemText});

//添加并且显示 

list.setAdapter(listItemAdapter); 

//注册监点击听器

list.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,

long arg3) {

// TODO Auto-generated method stub

setTitle("点击"+arg2+"个项目");

}

});

//添加长按点击

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

@Override

public void onCreateContextMenu(ContextMenu menu, View v,

ContextMenuInfo menuInfo) {

// TODO Auto-generated method stub

menu.setHeaderTitle("长按按钮-ContextMenu");

menu.add(0,0,0,"弹出长按钮菜单子菜单1");

menu.add(0,0,0,"弹出长按钮菜单子菜单2");

}

});

}

//长按钮菜单响应函数

@Override

public boolean onContextItemSelected(MenuItem item){

setTitle("点击了长按钮菜单里的第"+item.getItemId()+"个项目");

return super.onContextItemSelected(item);

}

 

}


分享到:
评论

相关推荐

    ScrollView嵌套两个ListView

    当两者同时存在时,系统可能无法正确识别哪个应该负责滚动,导致用户体验下降。 解决这个问题的一种常见方法是自定义一个ViewGroup,继承自ScrollView,然后在这个自定义布局中管理两个ListView。这样,你可以重写...

    BaseAdapter的使用与优化

    在“BaseAdapter的使用与优化”这个项目中,你将有机会实践这些优化技巧,理解它们如何帮助改善应用的性能和用户体验。通过对ListView适配器的深入理解和实践,你将能更好地处理大数据量的显示问题,提升应用的效率...

    Listview_with_checkbox_XF:具有Xamarin形式的复选框的ListView

    在Xamarin.Forms中,ListView是展示数据集合的强大控件,它可以用于显示一系列可滚动的项目。在某些场景下,我们可能...通过这个项目,开发者可以学习如何在Xamarin.Forms应用中实现功能丰富的交互界面,提高用户体验。

    Android TableView初版源码

    在Android开发中,自定义控件是提升应用用户体验和界面独特性的重要手段。"Android TableView初版源码"是一个专为Android平台设计的简单TableView实现,它提供了展示数据的网格视图,类似于iOS中的UITableView。这个...

    初中级Android开发社招面试之性能优化.zip

    1. 使用RecyclerView替代ListView:RecyclerView提供了更灵活的item布局管理,并且通过ViewHolder模式降低了视图复用的复杂性,提高滚动流畅性。 2. 动画优化:减少过度绘制,使用硬件加速,以及合理设计动画避免...

    Andriod项目之"CJJ"系列教程(七)——羽扇纶巾笑谈间_by_CJJ

    Android中展示列表数据通常用到Adapter,CJJ会讲解如何创建自定义Adapter,结合ListView或RecyclerView实现数据的动态加载和滚动效果。 6. 活动切换与Fragment管理 详解Activity之间的跳转逻辑和Fragment的使用,...

    android真实项目教程(三)——首页初点缀_by_CJJ

    同时,还会涉及如何使用Adapter将数据绑定到ListView或RecyclerView上进行显示。 5. **图片处理**:在Android中,图片的加载和缓存是一个重要的话题。我们会介绍如何使用 Glide 或 Picasso 图片加载库来优化用户...

    史上最简单,适合初手的安卓音乐播放器源代码

    例如,可能会有一个专门用来展示歌曲列表的ListView或者RecyclerView,以及控制播放、暂停、上一曲、下一曲等功能的按钮。 接下来,是处理用户交互和音乐播放的核心Java或Kotlin类。这个类通常继承自`...

    Android-PullToRefresh-master小白基本使用教程

    在Android开发中,为了提供更好的用户体验,我们常常需要在ListView或者RecyclerView中实现上拉刷新和下拉加载更多功能。这就是Android-PullToRefresh库的作用,它是一个强大的第三方库,可以帮助开发者轻松实现这一...

    Android应用源码之初初级记事本程序,直接写文件-IT计算机-毕业设计.zip

    这个记事本应用的界面可能包括ListView用于显示记事列表,EditText用于输入记事内容,以及Button用于保存或删除记事。布局文件(XML)定义了这些元素的位置和样式,而Activity通过Java代码与这些元素交互,实现逻辑...

    餐饮管理系统设计.pptx

    首先,系统设计之初需要考虑的关键问题包括主窗体的界面布局、窗体初始化与参数设置,以及不同窗体间的参数传递。主窗体作为用户与系统交互的首要界面,其设计直接影响用户体验。界面应清晰、直观,便于操作。窗体...

    26.0.0的recycleview

    4. **动画支持**:RecyclerView支持添加、删除和移动项时的动画效果,提供更好的用户体验。 5. **自定义化**:开发者可以自定义ItemDecoration来增加间隔、边框等装饰,也可以自定义ItemAnimator来定制项的动画行为...

    自己设计Launcher01:MyLauncher V1.0

    3. **用户体验**:良好的用户体验是必不可少的,例如,滑动流畅性、界面布局合理性、交互反馈等都需要仔细设计。 4. **兼容性问题**:由于Android版本众多,MyLauncher V1.0在设计时需考虑不同API级别的兼容性,...

    安卓期末大作业,装修建材App包含登录注册含数据库,Androidstudio开发适合初学者使用

    这需要开发者掌握ListView、RecyclerView等列表控件的使用,以及如何从网络获取数据(例如JSON API)并展示到界面上。网络请求通常借助像Retrofit或Volley这样的网络库来实现,同时考虑到离线缓存和错误处理。 在...

    基于Android的音乐播放器.zip

    【基于Android的音乐播放器.zip】是一个专门为学习Android开发的学生和初入职场的开发者准备的项目资源包。这个项目展示了如何在Android平台上构建一个音乐播放器应用,涵盖了Android开发的基础和核心功能。以下是对...

    基于Android的超强功能通讯录.zip

    这个项目适用于初入IT行业的毕业生,特别是那些对Android开发感兴趣的学生或者开发者。它支持使用Android Studio、IntelliJ IDEA以及Eclipse进行开发,但推荐使用前两者,因为它们提供了更现代、更强大的集成开发...

    Android 北京公交线路查询(离线)-IT计算机-毕业设计.zip

    虽然此应用离线运行,但在设计之初可能利用了网络获取北京公交线路的数据,然后保存到本地数据库。常见的本地数据存储方式有SQLite数据库,它是一个轻量级的嵌入式数据库,适合在Android应用中存储结构化数据。...

    安卓开发-获取手机联系人并按字母排序,且可根据字母右侧A~Z检索.zip

    - 检索时,可以在ContentResolver的query()方法中使用 ContactsContract.Contacts.DISPLAY_NAME_INITIALS 或 PHONETIC_NAME初字母作为筛选条件,限制返回以所选字母开头的联系人。 - 为了提高用户体验,还可以提供...

    基于安卓Android个人理财系统毕业设计

    【基于安卓Android个人理财系统毕业设计】是一个针对在校学生或者初入职场的年轻人群体而设计的项目,旨在帮助他们管理个人财务,实现收支清晰、理财有方。这个毕业设计涵盖了移动应用开发的关键技术和概念,主要...

Global site tag (gtag.js) - Google Analytics