java 安卓 listview_安卓ListView操作的两种方法

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

第一种: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 li=new ArrayList();//为方法一创建一个集合 ,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; //最后返回

}

运行截图

f1fff254575ef59404bb2e7f62e5b2bc.png

第二种方法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> li2=new ArrayList>();  //为方法二创建另一个集合

@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 item=new HashMap();

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);

最后运行也是一样的

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值