- 浏览: 389366 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (285)
- test (0)
- 分类 (1)
- java (281)
- tttttttttttt (1)
- android程序复制数据库 (1)
- Hibernate 动态 HQL (1)
- java编写扑克的洗牌程序 (1)
- NIO 之 选择就绪模式 (1)
- wpo另类问题:不可轻视的蜘蛛爬行对服务器造成的负担 (1)
- haml (1)
- cvcvcvc (1)
- 开源史上最成功的8个开源产品 (1)
- XML文件转换成Word文件或者Excel文件 (1)
- 一些利用开源浏览器核心开发专用浏览器的连接 (1)
- 毛笔效果简单思路 (1)
- 年终考评以后 (1)
- RFC821 简单邮件传输协议(SMTP)中文定义文档 (1)
- JNI中jstring类型与c语言中的字符串的转换 (1)
- 极限编程(XP)的重构与设计模式 (1)
- MapInfo2005年第三期电子新闻 (1)
- 想到目前各BLOG站点和搜索引擎的一点点缺陷 (1)
- 成功通过DB2的700和701考试 (1)
- 基于记录登陆信息的防止网页暴力破解方法 (1)
- Router路由 (1)
- 终于稍微完整的学习了一下Linux (1)
- android手机通讯录备份还原代码 (1)
- Qt之美(一):d指针/p指针详解 (1)
- DB2 静默安装 (1)
- linux开机启动脚本的顺序 (1)
- Hibernate实体对象的三种状态 (1)
- Hibernate面向对象的hql语句 (1)
- ibatIS调用存储过程 (1)
- Linux启动过程(详细说明) (1)
- C3P0配置 (1)
- memcache安装 (1)
- js event.keyCode (1)
- java获取汉子首字母 (1)
- Eclipse GC log (1)
- java轻量级httpserver (1)
最新评论
-
smilea001:
我知道了,作者采用的是gbk编码,我采用的是utf-8编码,
java获取汉子首字母 -
smilea001:
我输入的也是--
java获取汉子首字母 -
di1984HIT:
写的不错啊。
Router路由 -
kaixinyou:
...
2011.07.20——— android 获得当前view在屏幕的坐标 -
zhengjianbo:
你好,可以将你的实现代码公布下吗!万分感谢!
毛笔效果简单思路
[size=medium;]使用自定义的baseadapter实现listview的展示[/size]
[size=small;]实现以下功能点:[/size]
[size=medium;]1.通过自定义的baseadapter展示listview;[/size]
[size=medium;]2.动态修改、刷新listview内容;[/size]
[size=medium;]3.在自定义的baseadapter中实现listview内容的点击和长按点击事件;[/size]
[size=medium;]4.在baseadapter的getview方法中动态增加新组件;[/size]
[size=small;]效果图如下:[/size]
<span style="color: #008000; font-size: large;">xml配置文件1(list_view01.xml)</span>
<span style="color: #008000; font-size: large;">xml配置文件2(list_view01_item.xml)</span>
<span style="color: #008000; font-size: large;">自定义的baseadapter类代码</span>
[size=small;]实现以下功能点:[/size]
[size=medium;]1.通过自定义的baseadapter展示listview;[/size]
[size=medium;]2.动态修改、刷新listview内容;[/size]
[size=medium;]3.在自定义的baseadapter中实现listview内容的点击和长按点击事件;[/size]
[size=medium;]4.在baseadapter的getview方法中动态增加新组件;[/size]
[size=small;]效果图如下:[/size]
<span style="color: #008000; font-size: large;">xml配置文件1(list_view01.xml)</span>
<?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" > <linearlayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" > <edittext android:id="@+id/edittext01edit" android:layout_width="110sp" android:layout_height="wrap_content" android:text="" /> <button android:id="@+id/button01edit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="动态修改第1行第2列数据" android:onclick="editpersonandrefreshlistview01" /> </linearlayout> <listview android:id="@+id/listview01" android:layout_width="fill_parent" android:layout_height="fill_parent" /></linearlayout>
<span style="color: #008000; font-size: large;">xml配置文件2(list_view01_item.xml)</span>
<?xml version="1.0" encoding="utf-8"?><linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" ><textview android:id="@+id/listview01item01" android:layout_width="50sp" android:layout_height="wrap_content" /><textview android:id="@+id/listview01item02" android:layout_width="90sp" android:layout_height="wrap_content" /> <textview android:id="@+id/listview01item03" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </linearlayout><span style="color: #008000; font-size: large;">activity类代码:</span>
package com.zhouzijing.android;import java.util.arraylist;import java.util.list;import com.zhouzijing.android.util.menuentity;import android.app.activity;import android.os.bundle;import android.view.contextmenu;import android.view.contextmenu.contextmenuinfo;import android.view.menuitem;import android.view.view;import android.view.view.oncreatecontextmenulistener;import android.widget.adapterview;import android.widget.adapterview.adaptercontextmenuinfo;import android.widget.adapterview.onitemclicklistener;import android.widget.adapterview.onitemlongclicklistener;import android.widget.adapterview.onitemselectedlistener;import android.widget.baseadapter;import android.widget.edittext;import android.widget.listadapter;import android.widget.listview;import android.widget.toast;public class listviewdemo extends activity { //定义person list<person> persons ; listadapter adapter = null; listview listview01 = null; edittext edittextpersonname = null; //定义上下文菜单 final private static int context_menu_edit = 0;//菜单[编辑]的编号 final private static int context_menu_share = 1;//菜单[分享]的编号 final private static int context_menu_delete = 2;//菜单[删除]的编号 final private static int context_menu_cancel = 3;//菜单[取消]的编号 private menuentity[] contextmenus = { new menuentity(0, context_menu_edit, 0, "编辑"), new menuentity(0, context_menu_share, 1, "分享"), new menuentity(0, context_menu_delete, 2, "删除"), new menuentity(0, context_menu_cancel, 3, "取消"), }; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.list_view01); //获取组件 listview01 = (listview)findviewbyid(r.id.listview01); edittextpersonname = (edittext)findviewbyid(r.id.edittext01edit); //显示listview initlistallpersons(); showbymybaseadapter(); //初始化listview的事件 //initlistview01event(); } public void initlistallpersons(){ persons = new arraylist<person>(); persons.add(new person(100,"李小龙","香港",android.r.drawable.ic_delete)); persons.add(new person(101,"施瓦辛格","美国",android.r.drawable.ic_dialog_alert)); persons.add(new person(102,"戴安娜王妃","英国",android.r.drawable.ic_dialog_dialer)); persons.add(new person(103,"成龙","香港",android.r.drawable.ic_dialog_map)); persons.add(new person(104,"史泰龙","美国",android.r.drawable.ic_lock_idle_alarm)); persons.add(new person(105,"圣女贞德","法国",android.r.drawable.ic_media_next)); persons.add(new person(106,"列宁","苏联",android.r.drawable.ic_media_play)); persons.add(new person(107,"爱迪生","美国",android.r.drawable.ic_menu_add)); persons.add(new person(108,"孔子","中国",android.r.drawable.ic_media_rew)); persons.add(new person(109,"杨七郎","宋朝",android.r.drawable.ic_menu_zoom)); persons.add(new person(110,"秦始皇","秦国",android.r.drawable.ic_menu_agenda)); persons.add(new person(111,"岳飞","宋朝",android.r.drawable.ic_lock_lock)); } public void showbymybaseadapter(){ adapter = new mybaseadapter(this, persons); listview01.setadapter(adapter); } /** * 按钮button01edit的onclick事件. * @param view */ public void editpersonandrefreshlistview01(view view){ //获取textedit数据 string value = edittextpersonname.gettext().tostring(); //更新listview的内容,并且动态刷新. persons.get(0).name=value; ((baseadapter) adapter).notifydatasetchanged(); } /** * 初始化listview01的事件. */ public void initlistview01event(){ //listview的item点击事件 listview01.setonitemclicklistener(new onitemclicklistener(){ @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { toast.maketext(getapplicationcontext(), "[onitemclicklistener]点击了:"+persons.get(position).name, toast.length_short).show(); } }); //listview的item长按点击事件 listview01.setonitemlongclicklistener(new onitemlongclicklistener(){ @override public boolean onitemlongclick(adapterview<?> parent, view view, int position, long id) { toast.maketext(getapplicationcontext(), "[onitemlongclicklistener]点击了:"+persons.get(position).name, toast.length_short).show(); return false; } }); //listview的键盘选中事件(直接触摸屏幕选中不会激发) listview01.setonitemselectedlistener(new onitemselectedlistener(){ @override public void onitemselected(adapterview<?> parent, view view, int position, long id) { toast.maketext(getapplicationcontext(), "[onitemselectedlistener:onitemselected]点击了:"+persons.get(position).name, toast.length_short).show(); } @override public void onnothingselected(adapterview<?> parent) { toast.maketext(getapplicationcontext(), "[onitemselectedlistener:onnothingselected]点击了", toast.length_short).show(); } }); //listview组件:创建上下文菜单 listview01.setoncreatecontextmenulistener(new oncreatecontextmenulistener(){ @override public void oncreatecontextmenu(contextmenu menu, view v, contextmenuinfo menuinfo) { //获取上下文菜单点击的listview的位置(position)属性 adaptercontextmenuinfo info = (adaptercontextmenuinfo) menuinfo; int position = info.position; //设置上下文菜单标题 menu.setheadertitle(persons.get(position).name); //设置上下文菜单栏目 menuentity menuentity = null; for(int i=0;i<contextmenus.length;i++){ menuentity = contextmenus[i]; menu.add(menuentity.getgroupid(),menuentity.getitemid(),menuentity.getorder(),menuentity.gettitle()); } } }); } //监听选择上下文菜单的选择事件 @override public boolean oncontextitemselected(menuitem item) { //选中的上下文菜单的itemid int itemid = item.getitemid(); //获取上下文菜单点击的listview的位置(position)属性 adaptercontextmenuinfo info = (adaptercontextmenuinfo) item.getmenuinfo(); int position = info.position; //toast toast.maketext(getapplicationcontext(), "[oncontextitemselected]点击了"+persons.get(position).name+"" + ",菜单="+contextmenus[itemid].gettitle(), toast.length_short).show(); return true; } }<span style="color: #008000; font-size: large;">person类代码</span>
package com.zhouzijing.android;public class person { public int id; public string name; public string address; public int photo; public person(int id, string name, string address,int photo) { super(); this.id = id; this.name = name; this.address = address; this.photo = photo; }}
<span style="color: #008000; font-size: large;">自定义的baseadapter类代码</span>
package com.zhouzijing.android;import java.util.list;import android.content.context;import android.util.log;import android.view.gravity;import android.view.layoutinflater;import android.view.view;import android.view.view.onclicklistener;import android.view.view.onlongclicklistener;import android.view.viewgroup;import android.widget.baseadapter;import android.widget.imageview;import android.widget.linearlayout;import android.widget.textview;import android.widget.toast;public class mybaseadapter extends baseadapter { private list<person> persons; context context; public mybaseadapter(context context,list<person> persons){ this.persons = persons; this.context = context; } @override public int getcount() { return (persons==null)?0:persons.size(); } @override public object getitem(int position) { return persons.get(position); } @override public long getitemid(int position) { return position; } public class viewholder{ textview textviewitem01; textview textviewitem02; textview textviewitem03; imageview imageview; } @override public view getview(int position, view convertview, viewgroup parent) { final person person = (person)getitem(position); viewholder viewholder = null; if(convertview==null){ log.d("mybaseadapter", "新建convertview,position="+position); convertview = layoutinflater.from(context).inflate( r.layout.list_view01_item, null); viewholder = new viewholder(); viewholder.textviewitem01 = (textview)convertview.findviewbyid( r.id.listview01item01); viewholder.textviewitem02 = (textview)convertview.findviewbyid( r.id.listview01item02); viewholder.textviewitem03 = (textview)convertview.findviewbyid( r.id.listview01item03); //动态增加1个imageview viewholder.imageview = new imageview(context); linearlayout.layoutparams mparams = new linearlayout.layoutparams( linearlayout.layoutparams.wrap_content, linearlayout.layoutparams.wrap_content); mparams.gravity = gravity.center; mparams.width=50; viewholder.imageview.setlayoutparams(mparams); //这个imageview放到listview的第2列之后 ((linearlayout)convertview).addview(viewholder.imageview,2); convertview.settag(viewholder); }else{ viewholder = (viewholder)convertview.gettag(); log.d("mybaseadapter", "旧的convertview,position="+position); } viewholder.textviewitem01.settext(string.valueof(person.id)); viewholder.textviewitem02.settext(person.name); viewholder.textviewitem03.settext(person.address); viewholder.imageview.setimageresource(person.photo); //对listview中第1个textview配置onclick事件 viewholder.textviewitem01.setonclicklistener(new onclicklistener(){ @override public void onclick(view v) { toast.maketext(context, "[textviewitem01.setonclicklistener]点击了"+person.name, toast.length_short).show(); } }); //对listview中的每一行信息配置onclick事件 convertview.setonclicklistener(new onclicklistener(){ @override public void onclick(view v) { toast.maketext(context, "[convertview.setonclicklistener]点击了"+person.name, toast.length_short).show(); } }); //对listview中的每一行信息配置onlongclick事件 convertview.setonlongclicklistener(new onlongclicklistener(){ @override public boolean onlongclick(view v) { toast.maketext(context, "[convertview.setonlongclicklistener]点击了"+person.name, toast.length_short).show(); return true; } }); return convertview; }}<span style="color: #008000; font-size: medium;">menuentity类代码:</span>
package com.zhouzijing.android.util;/** * 定义菜单实体结构. * @author stephen * */public class menuentity{ /** * 生成菜单. * @param groupid * @param itemid * @param order * @param title */ public menuentity(int groupid, int itemid, int order, charsequence title) { super(); this.groupid = groupid; this.itemid = itemid; this.order = order; this.title = title; } /** * 组. */ private int groupid; /** * 菜单编号. */ private int itemid; /** * 显示顺序号. */ private int order; /** * 菜单显示名称. */ private charsequence title; /** * @return the groupid */ public int getgroupid() { return groupid; } /** * @param groupid the groupid to set */ public void setgroupid(int groupid) { this.groupid = groupid; } /** * @return the itemid */ public int getitemid() { return itemid; } /** * @param itemid the itemid to set */ public void setitemid(int itemid) { this.itemid = itemid; } /** * @return the order */ public int getorder() { return order; } /** * @param order the order to set */ public void setorder(int order) { this.order = order; } /** * @return the title */ public charsequence gettitle() { return title; } /** * @param title the title to set */ public void settitle(charsequence title) { this.title = title; } }
发表评论
-
java轻量级httpserver
2012-02-08 11:48 1578httpclient+httpserver demo ... -
Eclipse GC log
2012-02-04 16:59 1404为了查看Eclipse GC log,需要在eclip ... -
java获取汉子首字母
2012-02-03 09:14 1527public class StringUtil { ... -
js event.keyCode
2012-02-03 09:09 1212<span style="" ... -
memcache安装
2012-02-02 12:04 1152? <blockquote> 1. ... -
C3P0配置
2012-02-02 11:34 989cquireIncrement[3] ... -
Linux启动过程(详细说明)
2012-02-01 09:09 1574<div class="post ... -
ibatIS调用存储过程
2012-01-31 15:38 1606<p>一、ibatIS调用存储过程(调用存 ... -
Hibernate面向对象的hql语句
2012-01-11 13:14 1011Hibernate中hql条件语句的书写方式有: ? ... -
Hibernate实体对象的三种状态
2012-01-11 12:59 1276<p style="text- ... -
linux开机启动脚本的顺序
2011-12-21 15:14 1118下开机自动启动脚本所涉及的知识和方法、如下: ... -
DB2 静默安装
2011-12-21 11:59 1060<span style="color: ... -
Qt之美(一):d指针/p指针详解
2011-12-20 15:14 1960[/b]2011.11.16 [size=18px;] ... -
android手机通讯录备份还原代码
2011-12-20 11:54 2943<span style="font-f ... -
终于稍微完整的学习了一下Linux
2011-12-19 12:14 1182Linux以前也装过两次,不过几乎没去用。头几天看一些 ... -
Router路由
2011-12-19 10:54 1169Router路由:设定线的轨迹,在Connection ... -
基于记录登陆信息的防止网页暴力破解方法
2011-12-17 10:49 1440对黑客方面比较感兴趣的或者是比较熟悉的,应该知道溯雪这 ... -
成功通过DB2的700和701考试
2011-12-16 17:27 865嘿嘿,原以为比较没有信心的701考试也被俺成功的攻克了 ... -
想到目前各BLOG站点和搜索引擎的一点点缺陷
2011-12-15 15:54 882感觉无聊,就到中国博客网的首页逛了逛,想看看有没有什么 ... -
MapInfo2005年第三期电子新闻
2011-12-15 10:49 906<span lang="EN-US&q ...
相关推荐
至此,我们已经掌握了在Android Studio中使用ListView和自定义BaseAdapter的基本步骤。通过这种方式,你可以灵活地展示各种类型的数据,并且可以通过扩展Adapter来实现更复杂的功能,如点击事件、长按事件等。在实际...
总结来说,"用BaseAdapter实现的ListView"意味着开发者通过自定义适配器的方式,将数据源与ListView进行了绑定,实现了数据的动态加载和视图的个性化呈现。BaseAdapter的灵活性使得开发者能够完全控制ListView的显示...
自定义BaseAdapter操作步骤实现Listview的界面显示,操作简易
本示例"BaseAdapter_listview"正是通过自定义BaseAdapter来实现ListView的展示。 首先,我们要理解`Adapter`的概念。Adapter是数据源和UI控件之间的桥梁,它将数据转换成可以被View显示的格式。在ListView中,每个...
3. 创建自定义BaseAdapter,将Java对象列表作为数据源。 4. 设置ListView的Adapter为自定义的BaseAdapter。 5. ListView会自动调用Adapter的getView()方法,根据数据生成并显示列表项。 总结,JSON的解析和显示是...
- 视图复用:为了提高性能,ListView使用了convertView机制。在getView()中,如果convertView不为空,那么我们可以复用这个已经创建过的View,避免频繁地创建新View。 - 数据绑定:使用findViewById()获取View,...
通过自定义BaseAdapter,我们可以控制ListView中的每一项如何显示,包括添加图片。 1. **创建布局文件**: 首先,我们需要为ListView的每个Item创建一个布局文件。这个布局通常会包含一个ImageView和一个TextView,...
可能是展示自定义BaseAdapter在实际应用中的截图,显示了适配器如何将数据呈现到屏幕上的视图组件中,比如ListView的各个条目。 通过以上所述,我们可以理解自定义BaseAdapter在Android开发中的重要性和实现方式,...
在提供的"ListViewTeacheing"文件中,可能包含了一个示例项目的源代码,包括一个自定义的BaseAdapter实现以及如何在Activity中使用这个Adapter与ListView进行交互。通过学习这个例子,你可以更好地理解上述步骤,并...
- 为了高效地加载大量数据,ListView使用了视图复用机制(View Recycling),只有当前可见的Item会被渲染,其他Item会复用已存在的View,从而节省内存和提高性能。 2. **自定义Adapter** - 在ListView中,数据...
本文将深入探讨如何实现一个自定义Dialog来展示ListView,并且允许用户通过长按来删除ListView中的item数据。 首先,我们需要创建自定义Dialog的布局文件。在res/layout目录下创建一个新的XML文件,例如`dialog_...
你可以继承`BaseAdapter`、`ArrayAdapter`或`CursorAdapter`来实现自定义的适配器。你需要重写`getCount()`、`getItem()`、`getItemId()`和`getView()`方法,其中`getView()`是最重要的,它负责根据数据生成并返回...
ListView是Android中用于展示大量数据的视图组件,它通过复用视图(ViewHolder模式)实现了高效的滚动性能。在自定义左滑删除功能时,我们需要在ListView的每个Item上添加一个可滑动的视图层,并监听滑动事件。 1. ...
在Android开发中,ListView是一种常用的组件,用于展示大量的数据列表。在某些场景下,我们可能需要为ListView添加过滤功能,以便用户可以根据输入的关键字实时筛选显示的数据。在本教程中,我们将探讨如何实现一个...
为了提供更丰富的交互体验,开发者经常需要自定义ListView,实现如滑动删除Item等高级功能。本篇文章将详细讲解如何在Android中通过自定义控件来实现ListView的滑动删除功能。 首先,我们需要了解ListView的基本...
在Android开发中,自定义中文索引Listview是一项常见的需求,尤其在处理大量数据并需要快速定位时。本文将深入探讨如何实现这样一个功能,并提供一个名为`MyIndexableListView`的示例。 首先,理解Listview的基本...
本篇文章将详细探讨如何通过自定义ListView来实现单选功能,旨在帮助开发者解决这一问题。 一、自定义ListView的必要性 系统自带的ListView默认并未提供单选模式,而是多选或全选。当用户需要在列表中选择一个项目...
本教程将深入讲解如何使用ListView,结合自定义适配器以及解决Out-Of-Memory(OOM)问题。 首先,`ListView`是一个可滚动的视图,它能够显示一行行的数据。它通过Adapter来获取数据并将其渲染为可视化的列表项。...
接着,创建了一个名为`ListViewAdapter`的自定义Adapter,继承自`BaseAdapter`,并传入上下文和数据集作为构造函数参数。然后,通过`listView.setAdapter(listViewAdapter)`将Adapter绑定到ListView上。 在`getView...
实现自定义可扩展ListView,我们需要关注以下几个关键点: 1. **数据模型**:设计一个数据模型来存储列表项的信息,包括是否展开的状态、子项列表等。例如,可以创建一个`ExpandableItem`类,包含标题、子项列表和...