举例做一个微信的中间部分(好友消息等信息通知)

第一种:BaseAdapter()

package com.example.wx;

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

import wx.aa;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

public class MainActivity extends Activity {

private ListView lv;
private List<aa> li=new ArrayList<aa>();//为方法一创建一个集合 ,aa类名
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.weixin);
lv=(ListView)findViewById(R.id.listView1);   //找到listvie控件

for( int i=0;i<100;i++)      //模拟读取数据库或者互联网添加100条数据
//为方法一
aa a=new aa();
a.setTou1("sss");
a.setUserName("张三"+i);
a.setLastMessage("晚上有约");
a.setDatetime("11月11日");
li.add(a);
}

//使用BaseAdapter()

lv.setAdapter(new BaseAdapter() {

@Override

//只是一个显示多少条数据的方法(这里我们直接返回li.size()就是集合的个数100条)
public int getCount() {
// TODO Auto-generated method stub
return li.size();
}
@Override

//操作listview的item项 也就是一行一行的数据方法(里面包含多个控件)
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View vi=null;  //定义一个View 
if (convertView==null)  //如果缓存为空,我们生成新的布局作为1个item
{
Log.i("info:","没有缓存,重新生成"+position);
LayoutInflater inflater=MainActivity.this.getLayoutInflater();

//因为getView()返回的对象,adapter会自动赋给ListView,  R.layout.listview_item_layout是布局文件
vi=inflater.inflate(R.layout.listview_item_layout, null);
}
else
{
Log.i("info:","有缓存"+position);
vi=convertView;
}
//获取集合
aa a=li.get(position);
//找到item里面的所有控件绑定数据
TextView name=(TextView)vi.findViewById(R.id.textView1);  //名字
name.setText(a.getUserName());//赋值
TextView messge=(TextView)vi.findViewById(R.id.t2); //最后一条消息
messge.setText(a.getLastMessage());
TextView datetime=(TextView)vi.findViewById(R.id.t3); //时间
datetime.setText(a.getDatetime());
return vi; //最后返回

}

运行截图

第二种方法SimpleAdapter()

package com.example.wx;

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

import wx.aa;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

public class MainActivity extends Activity {

private ListView lv;
private SimpleAdapter sa; //创建一个SimpleAdapter
private List<Map<String,Object>> li2=new ArrayList<Map<String,Object>>();  //为方法二创建另一个集合
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.weixin);
lv=(ListView)findViewById(R.id.listView1);

for( int i=0;i<100;i++)
{
Map<String,Object> item=new HashMap<String,Object>();
item.put("tuo", R.drawable.tou1);
item.put("name", "张三");
item.put("messge", "今晚有约");
item.put("datetime", "11月11日");
li2.add(item);
}
//第二种方法使用BaseAdapter() ,里面有五个参数 第一个上下文this,第二个data数据源,第三个布局文件,第四个from从哪里来,第五个to往哪里去(也就是绑定控件)
sa=new SimpleAdapter(
this,
li2,
R.layout.listview_item_layout,
new String[]{"tuo","name","messge","datetime"},
new int[]{R.id.imageView1,R.id.textView1,R.id.t2,R.id.t3});
lv.setAdapter(sa);

最后运行也是一样的

两种方法各有差异第一种推荐使用,第二种代码量比较少,看个人喜号

安卓ListView操作的两种方法的更多相关文章

  1. spark-sql将Rdd转换为DataFrame进行操作的两种方法

    SparkConf sparkConf = new SparkConf() .setMaster("local").setAppName("ClzMap"); ...

  2. WCF 客户端调用服务操作的两种方法

    本节的主要内容:1.通过代理类的方式调用服务操作.2.通过通道的方式调用服务操作.3.代码下载 一.通过代理类的方式调用服务操作(两种方式添加代理类) 1.手动编写代理类,如下: 客户端契约: usi ...

  3. 在Activity中响应ListView内部按钮的点击事件的两种方法!!!

    在Activity中响应ListView内部按钮的点击事件的两种方法 转载:http://www.cnblogs.com/ivan-xu/p/4124967.html 最近交流群里面有人问到一个问题: ...

  4. Linux 下操作GPIO(两种方法,驱动和mmap)(转载)

    目前我所知道的在Linux下操作GPIO有两种方法: 1.编写驱动,这当然要熟悉Linux下驱动的编写方法和技巧,在驱动里可以使用ioremap函数获得GPIO物理基地址指针,然后使用这个指针根据io ...

  5. JqueryMobile动态生成listView并实现刷新的两种方法

    本篇文章主要是对JqueryMobile动态生成listView并实现刷新的两种方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 JqueryMobile动态生成listView并实现刷新 ...

  6. Linux 下操作gpio(两种方法,驱动和mmap)

    目前我所知道的在linux下操作GPIO有两种方法: 1.  编写驱动,这当然要熟悉linux下驱动的编写方法和技巧,在驱动里可以使用ioremap函数获得GPIO物理基地址指针,然后使用这个指针根据 ...

  7. Android开发12——Andorid中操作数据库的insert的两种方法以及nullColumnHack

    一.发现问题 先看两种方法插入数据 public void save(Person p){ SQLiteDatabase db = dbHelper.getWritableDatabase(); db ...

  8. 代码操作Word时,目录自动更新的两种方法

    最近的项目中有一个功能点为:根据分析数据库并生成报告.不过不是大数据.数据挖掘之类,报告的内容.组织方式都是事先固定下来的.实现的方式为,在普通word文档中插入书签制成模板,然后程序使用OpenXM ...

  9. PyQt(Python+Qt)学习随笔:model/view架构中支持QListView列表中展示图标的两种方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在QListView列表视图中的项不但可以展示文字,也可以展示图标和复选框,同时可以指定项是否可以拖 ...

随机推荐

  1. CDH5 集群安装教程

    一.虚拟机的安装和网络配置. 1.虚拟机安装. 2.安装CentOS-6.5 64位版本. 桥接模式: Master: 内存:3G: 硬盘容量40G: 4核: Slave: 内存2G: 硬盘容量30G ...

  2. C++中 _itoa_s方法简介

    _itoa_s 函数原型如下: _itoa_s ( int value, char *buffer, size_t sizeInCharacters, //存放结果的字符数组长度 int radix ...

  3. 使用Qt创建第一个OpenCV的Gui应用

    写在前面 学习OpenCV有一些小日子了,发现群里还有很多初学OpenCV的人像我当初一样跌跌撞撞到处找资料,所以在这里把学习笔记分享给大家,希望有志学习OpenCV进行计算机视觉活动的小伙伴们能少走 ...

  4. Codeforces 193D Two Segments 解题报告

    先是在蓝桥杯的网站上看到一道题: 给出1~n的一个排列,求出区间内所有数是连续自然数的区间的个数.n<=50000. 由于数据较弱,即使用O(N^2)的算法也能拿到满分. 于是在CF上发现了这一 ...

  5. phpcms V9 内容模型管理(转)

    转自:http://www.cnblogs.com/Braveliu/p/5102627.html [1]理解模型 模型,系统知识的抽象表示.既然抽象了,那就得脑补一下.大家都是面向对象设计的专业人员 ...

  6. CentOS 6.5 IP 设置

    DEVICE=eth0TYPE=EthernetUUID=7d6d54e0-054d-472b-8cc1-080f16ef36c1ONBOOT=yesNM_CONTROLLED=yesBOOTPROT ...

  7. cc命令

    多数UNIX平台都通过CC调用它们的C编译程序.除标准和CC以外,LINUX和FREEBSD还支持gcc. 基本的编译命令有以下几种: 1. -c 编译产生对象文件(*.obj)而不链接成可执行文件, ...

  8. js中的潜伏者之Arguments对象

    argument 说明: 在JavaScript中,arguments是对象的一个特殊属性.arguments对象就像数组,但是它却不是数组.可以理解为他是潜伏者,通俗的说,就是你传的参数不一定按照参 ...

  9. php微信支付接口开发程序

    php微信支付接口开发程序讲解 微信支付接口现在也慢慢的像支付宝一个可以利用api接口来实现第三方网站或应用进行支付了, 下文整理了一个php微信支付接口开发程序并且己测试,有兴趣的朋友可进入参考. ...

  10. JQuery select控件的相关操作

    JQuery获取和设置Select选项方法汇总如下: 获取select 先看看下面代码: $("#select_id").change(function(){//code...}) ...