android ListView使用的三种方法汇总(通过继承BaseAdapter,使用SimpleAdapter和SimpleCursorAdapter)

listView适配器SimpleAdapter和SimpleCursorAdapter细节总结 立即下载

android中使用ListView显示列表,共有三种实现方式:


分别是通过继承baseAdapter,直接使用simpleAdapter和simplecursoradapter三种方式

下面我们直接通过代码来看一下实现的过程,代码中有详细的注释,所以,不再详细介绍三种方法的实现方式、


在实现三种方式之前,先定义一个xml文件来显示每一个item

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
    
    <TextView 
        android:textSize="30sp"
        android:layout_width="0sp"
        android:id="@+id/personid"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        />
    
    <TextView 


        android:textSize="30sp"
        android:layout_weight="3"
        android:layout_width="0sp"
        android:id="@+id/name"
        android:layout_height="wrap_content"
        />
    
    <TextView 
        android:layout_width="0sp"
        android:layout_weight="2"
        android:textSize="30sp"


        android:id="@+id/balance"
        android:layout_height="wrap_content"
        />
    
    


</LinearLayout>


第一种:baseadapter


package com.example.sqllite;


import java.util.ArrayList;
import java.util.List;


import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;


public class BaseAdapterActivity extends Activity {


ListView list;
List<Person> persons = new ArrayList<Person>();


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = (ListView) this.findViewById(R.id.list);


// 查询数据库获得person的集合
PersonDAO dao = new PersonDAO(getApplicationContext());
persons = dao.queryAll();


//为list添加adapter
list.setAdapter(new MyAdapter());


//添加监听事件
list.setOnItemClickListener(new OnItemClickListener() {


@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//parent是点击时间发生的adapter,position是点击的位置,即item的位置
Person p=(Person) parent.getItemAtPosition(position);//因为getItemAtPosition是通过调用getItem来获得
//object,因为在MyAdapter中getItem返回的是person,所以通过
//调用这个方法返回的是person

Toast.makeText(getApplicationContext(), p.getId()+"", 0).show();

}
});


}



//自定义adapter,继承baseadapter
class MyAdapter extends BaseAdapter {


@Override
public int getCount() {
// TODO Auto-generated method stub
return persons.size();//获得adapter中item的数量
}


@Override
public Object getItem(int position) {
return persons.get(position);//获得位于position位置的item
}


@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return persons.get(position).getId();///获得位于position位置的item的ID
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {


Person p = persons.get(position);//获得位置为position的person


//创建View  用xml填充View并返回
View view = View.inflate(getApplicationContext(), R.layout.item,
null);


TextView tv1 = (TextView) view.findViewById(R.id.personid);// 如果直接通过findViewById查询查询的并不是View下的,而是mainactivity下的
TextView tv2 = (TextView) view.findViewById(R.id.name);
TextView tv3 = (TextView) view.findViewById(R.id.balance);


// 为view内的三个控件赋值
tv1.setText(p.getId().toString());
tv2.setText(p.getName().toString());
tv3.setText(p.getBalance().toString());


return view;
}


}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}



第二种:直接使用simpleadapter

package com.example.sqllite;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;


public class SimpleAdapterActivity extends Activity {


List<Person> list;
ListView view;
List<HashMap<String, Object>> personList ;


@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);


setContentView(R.layout.activity_main);


PersonDAO dao = new PersonDAO(getApplicationContext());
list = dao.queryAll();


view = (ListView) this.findViewById(R.id.list);


//list中存放的是map  而map中每个key是属性名称,value是person中的属性值  
personList = new ArrayList<HashMap<String, Object>>();

//循环遍历list,将每一个person加入到map中
for (Person p : list) {
HashMap<String,Object> map=new HashMap<String, Object>();
map.put("ida", p.getId());
map.put("namea", p.getName());
map.put("balancea", p.getBalance());
personList.add(map);
}


//为ListView添加adapter,simpleadapter中第二个参数是List<HashMap<String, Object>>
//new String[] { "ida", "namea", "balancea"}代表map中的键值,new int[] { R.id.personid, R.id.balance, R.id.name }
//代表R.layout.item,中的textView的id
view.setAdapter(new SimpleAdapter(getApplicationContext(), personList,
R.layout.item, new String[] { "ida", "namea", "balancea" },
new int[] { R.id.personid, R.id.balance, R.id.name }));

view.setOnItemClickListener(new OnItemClickListener() {


@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {

HashMap<String,Object> a=(HashMap<String, Object>) parent.getItemAtPosition(position);//因为在simpleadapter中放入的是List<HashMap<String, Object>>,所以返回的是hashmap

Toast.makeText(getApplicationContext(), (String)a.get("namea"),0).show();

}
});


}
}



第三种:直接使用simplecursoradapter


package com.example.sqllite;


import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;


public class SimpleCursorAdapterActivity extends Activity {


ListView listView;
Cursor c;


@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);


setContentView(R.layout.activity_main);
listView = (ListView) this.findViewById(R.id.list);


PersonDAO dao = new PersonDAO(getApplicationContext());


c = dao.queryCursor();


// 此处查询时id必须为_id
listView.setAdapter(new SimpleCursorAdapter(getApplicationContext(),
R.layout.item, c, new String[] { "_id", "name", "balance" },
new int[] { R.id.personid, R.id.name, R.id.balance }));


listView.setOnItemClickListener(new OnItemClickListener() {


@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Cursor c = (Cursor) parent.getItemAtPosition(position);// 传入的是Cursor所以返回的是Cursor ,源码// return (adapter== null || position  < //0)?null : adapter.getItem(position);

String name = null;
if (c.moveToNext()) {
name = c.getString(c.getColumnIndex("name"));
}


Toast.makeText(getApplicationContext(), name, 0).show();


}
});


}


}



实例讲解Simulink CAN通讯丢失故障判定模型搭建及仿真测试验证方法 本文通过ABS通讯丢失故障触发、判定条件Simulink模型的搭建和仿真的讲解,介绍了一种控制器CAN通讯丢失故障判定的方法和建模方法,希望能给相关技术人员带来一定参考和帮助。 阅读详情

相关推荐

帆软 finereport FCRA 考试 题库+答案,共收录561题,大部分有答案

帆软 finereport FCRA 考试 题库+答案,共收录561题,大部分有答案 入门基础 11.多选题 以下方式中属于FineReport中预览模式的有( ) 分页预览、填报预览、新填报预览、数据分析、移动端预览 16.判断题 FineReport报表工具必须购买激活码后才能使用。 错误,可以免费获取激活码。 29.单选题 FineReport是一款利用( )语言开发的报表工具。java 41.多选题 访问帮助文档的方式有哪些?设计器中社区菜单下-帮助文档;直接访问http://help.finere

qq_37485720的博客 2万+

android开发之继承BaseAdapter实现通用数据适配器

原文出处:http://blog.youkuaiyun.com/javasuki/article/details/11869615

lazy的专栏 1125

Windows 10/11系统下TurboDesign 6.4.0完整安装指南(附序列号+破解补丁)

本文提供Windows 10/11系统下TurboDesign 6.4.0的完整安装指南,涵盖系统环境预检、安装程序部署、序列号处理及破解补丁部署等关键步骤。通过详细的安装教程和优化配置,帮助用户高效完成这款涡轮机械设计软件的安装与调试,解决常见兼容性问题。

s4t5u6v的博客 1030

十分钟安卓:ListView的简单使用——继承BaseAdapter

效果图如下: 布局文件如下: &lt;Button android:id="@+id/botton_1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="显示列表" android:onClick="...

weixin_43339952的博客 504

关于笔记本测试的面试准备 2021-10-11

** 关于笔记本测试的面试准备 ** 一、根据JD分析,工作内容以软测为主,硬件知识需要了解一点。 以下几个问题为主要: 1.了解VGA、audio、wlan、bt、TP 、camera等driver,BIOS和image测试。 2.了解性能测试工具?压力测试相关设置? 3.了解preload流程? 二、解决 VGA: video graphics array ——笔记本上外接显示器的接口。 【VGA接口兼容性更强,但是不支持高分辨率。 支持高分辨率:HDMI、DIV、TP】 bt【Bluetooth

xw_009的博客 1866

2024最新指南:如何用Python批量下载Sentinel-2数据(附避坑清单)

本文提供2024年最新Python批量下载Sentinel-2遥感数据的完整指南,涵盖环境配置、API准备、核心下载流程实现及实战避坑清单。通过智能查询器、断点续传下载器等实用工具,帮助用户高效获取遥感数据,避免常见网络问题和数据完整性验证失败。

silver的专栏 618

Android基础类之BaseAdapter

BaseAdapter就Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到像ListView、Spinner、Gallery及GridView等UI显示组件,它是继承自接口类Adapter, 1、Adapter类简介 1)、Adapter相关类结构如下图所示: 自定义Adapter子类,就需要实现上面几个方法,其中最重要的是getView()方

c_z_w的博客 551

4、高光图像滤镜显著改善文本图像的光学字符识别

本文介绍了高光图像滤镜在光学字符识别(OCR)中的应用,详细探讨了其技术原理、实现步骤和在多种场景下的效果。通过增强文本图像的边缘和对比度,高光滤镜显著提升了OCR的识别率,尤其适用于扫描文档、手写笔记和低质量图像。实验结果表明,该方法在不同类型的文本图像中均表现出色,并提出了未来优化方向,如深度学习集成和多模态融合,为OCR技术的发展提供了新的可能性。

ooo22的博客 95

Android ListView 最基本的用法,使用SimpleCursorAdapter 。 附例子。

一般在做网页的时候,要显示一个列表的数据,一般是对一个list的类进行循环,输出一大串的HTML字符串。数据比较多的话就会分页,比如一页10条记录,去数据库查询的时候就会limit 10条记录,速度非常快。 在Android中遇到几千条数据的时候,上下滑动,跟几十条数据的滑动流畅程度差不多,就是刚开始载入速度不一样。对Android 中的Adapter 数据绑定,进行Log输出后,发现是边滑动,

易水寒 4357

将Windbg附加到软件进程上排查异常闪退的问题

使用Windbg和Process Explorer排查因为内存泄漏导致的软件异常闪退问题。

dvlinker的技术专栏 1万+

AI之KE:Knowledge Engineering知识工程的简介、发展、应用案例之详细攻略

AI之KE:Knowledge Engineering知识工程的简介、发展、应用案例之详细攻略 目录 Knowledge Engineering知识工程的简介 0.1、What 0.2、How 0.3、Why 1、知识工程过程的5个活动 2、知识图谱的应用 Knowledge Engineering知识工程的发展 1、前知识工程时期——1950-1970时期:图...

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 5335

android simpleadapter 继承,Android——继承SimpleAdapter重写自己的getView

在上篇Android——ListView实现简单列表 中,利用SimpleAdapter实现了简单的列表绑定。在本文中,主要是通过重写getView方法,来看下adapter内部绑定数据大致是个什么流程。首先加入实现类:class mTestAdapter extends SimpleAdapter {private Context context; /*运行环境*/ArrayList> l...

weixin_42300317的博客 533

RK3588 buildroot 双网口bonding调试

本文介绍了Rockchip Buildroot中配置网络冗余的方法,通过bonding技术将多个物理网口合并为逻辑接口。主要内容包括:1)7种常见bonding模式的特点及适用场景;2)RK3588的具体配置流程,包括内核配置(启用bonding驱动、修改dts)、添加ifenslave工具;3)系统编译和网络状态检查。

501846585_QQAndroid_java 459

ListView(2)SimpleAdapter与SimpleCursorAdapter详解

SimpleAdapter官方定义: An easy adapter to map static data to views defined in an XML file. 一个简单的适配器,将静态数据映射到一个XML文件中定义的视图。 上面定义有两点引起了我的注意:简单、静态数据。我想知道设计人员在设计这个适配器的时候为什么把它叫做简单适配器,简单这个形容词描述的是什么属性?静态数据的

yhao的博客 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android开发 - ListView添加点击事件的三种方式

我用的最习惯的(在大作业里面应用最多的就是第一种啦~ 正题: ListView添加点击事件的三种方式 方式1:在BaseAdapter的基础上添加点击事件 personLV.setOnItemClickListener(new MyOnItemClickListener()); private class MyOnItemClickListener implements OnItemClickListener{ @Override public void onItemClick(A

陈杉菜 4042

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

android 给ListView添加点击事件的三种方式

android 给ListView添加点击事件的三种方式

sfhinsc的博客 6030

ArraryAdapter、SimpleCursorAdapter、SimpleAdapter、MyAdapter四大适配器的实现

转自:http://blog.youkuaiyun.com/aa4790139/article/details/6395626 在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。抽空把对ListView的使用做了整理,并写了个小例子,如下图。 列表的显示需要三个元素: 1.ListVeiw 用来展示列表的View。 2.适

老王的地盘 1205

android listview点击事件的参数,android——给ListView添加点击事件的三种方式

本文将介绍给ListView添加点击事件的三种方式:1、第一种方式。在BaseAdapter的基础上添加点击事件personLV.setOnItemClickListener(new MyOnItemClickListener());private class MyOnItemClickListener implements OnItemClickListener{@Overridepublic ...

weixin_28989315的博客 1691

Android ListView几种Adapter用法简介

ArrayAdapter<T> 适合非常简单的数据显示,很方便,很简单。 SimpleAdapter 可以自定义Item布局,用于显示交简单的布局及控件,但布局内的控件如按钮等无法获取到焦点,当然也就无法获取到他们的点击事件。 SimpleCursorAdapter 与SimpleAdapter相似,只是他的数据源是Cursor类型而已。 BaseAdpter子类 最常用的ListView数据适配器,通过继承BaseAdpter可以较灵活的实现数据的绑定,同时通过使用View

^_虫虫_^的专栏 8531

ListView之BaseAdapter

三种Adapter构建ListView                 ListView添加条目的时候, 可以使用setAdapter(ListAdapter)方法                         BaseAdapter: 定义一个类继承BaseAdapter, 重写4个抽象方法, ListView的条目是由getView()方法构建出来的                

u014744764的专栏 563

ArrayAdapter、SimpleAdapter、BaseAdapter的区别

ArrayAdapter是数组适配器,只能显示一条文本信息。使用时要给出数据源和条目布局。(一般应用于item view模板根元素为TextView的场合,数据集比较简单。) SimpleAdapter是简单适配器,可以显示负责的信息,它的数据源形式是List<Map<Sting,?>>,使用时要给出数据源,条目布局,数据源数据Map的键数组和对应的条目布局控件id数组。...

weixin_44633720的博客 1081

Android入门:ListView

一、ListView介绍   ListView是类似于将一个界面分为一行一行,如下图:   ListView只是一个视图,而如果要在这个列表视图中显示数据,则必须要通过“Adapter”,我们通常有三种Adapter: (1)ArrayAdapter:每行只能是一个文本; (2)SimpleAdapter:此种方式不是很好,经过测试,只能显示一行数据; (3)继承BaseAdap

xiazdong 4176

Android学习_使用Adapter创建ListView

Adapter本身只是一个接口,它派生了ListAdapter和SpinnerAdapter两个子接口。

qq_35073878的博客 1561

Android之ListView使用方法-ArrayAdapter-SimpleCursorAdapter-SimpleAdapter-BaseAdapter

在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。抽空把对ListView的使用做了整理,并写了个小例子,如下图。  列表的显示需要三个元素: 1.ListVeiw 用来展示列表的View。 2.适配器 用来把数据映射到ListView上的中介。 3.数据    具体的将被映射的字符串,图片,或者基

Android Linux MCU VC++ 487

Android ListView (多个adapter 说明)

最近维护项目,项目里面使用的都是ListView 这里也对ListView 回顾一下 ListView 在Android 里面用来实现列表的, 在xml 中创建ListView 代码如下 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_p

小牧在一直在学习,在前进的道路上大家一起学习,进步。 1331

android Adapter综合使用(ArrayAdapter、SimpleAdapter、BaseAdapter在ListView和GridView中的使用)

android Adapter综合使用(ArrayAdapter、SimpleAdapter、BaseAdapter在ListView和GridView中的使用)     在转载的android Adapter综合介绍中对Adapter接口及他的子接口或相关子类进行了详细的介绍,也对他的常用方法和各种子类适用在那种场所进行了介绍。接下来通过实例和代码分析来了解他的使用。 一、比较常用的

meng425841867的专栏 7206

ListView优化 不用ViewHolder(Google 不推荐) SimpleAdapter 就真的Simple了吗

现在很多人再给ListView的时候使用BaseAdapter来填充 在getView方法中 使用ViewHolder来优化 这中方法的确很达到优化的效果但仅仅是百分之70到80    很多人忽略了SimpleAdapter或者SimpleCursorAdapter(数据源在本地数据库中)本身的使用方法 都以为使用 SimpleCursorAdapter adapter2=new Simple

李啸 4019
上一篇: java可变性原则的封装
下一篇: android之uriMathcer详解及使用
撒行地
博客等级 码龄17年 28粉丝 42原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值