Android--ListView控件

概述:

(1)ListView:Android中显示列表的控件

(2)数据适配器: 向控件提供数据源,把复杂的数据填充在指定视图界面上,是连接数据源和视图界面的桥梁。

      A. ArrayAdapter :绑定格式单一的数据,数据源可以是集合或数组。

      B. SimpleAdapter:绑定格式复杂的数据,数据源只能是特定泛型的集合。

    适配器的实现:新建适配器——>添加数据源到适配器——>视图加载适配器。

(I)新建适配器:ArrayAdapter(上下文,当前listView加载的每一个列表项所对应的布局文件,数据源);

SimpleAdapter(context,data,resource,from,to);

//context: 上下文,this

//data: 数据源(list<? extends Map<String,?>> data)一个Map所组成的List集合,如 List<Map<String,Object>> list;

           每一个Map都对应ListView列表中的一行

           每一个Map(键-值对)中的键必须包含所有在from中所指定的键

自定义一个函数,初始化list,如

private List<Map<String,Object>> getData()

{

for(int i=0;i<20;i++)

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

map.put("PIC",R.drawable.图片名);

map.put("TEXT","慕课网"+i);

list.add(map);

}

return list;

//resource:列表项的布局文件ID,新建一个布局XML文件,布置每一项(行)的布局,相当于项的布局模板,如item.XML,则ID为R.layout.item

//from: Map中的键名,new String[]={"PIC","TEXT"};

//to: 绑定数据视图中的ID,与from成对应关系 ,item.XML中的ID。如new int[]{R.id.XXX,R.id.YYY}

(II)添加数据源到适配器

String[] arry_data={"慕课网1","www.imooc.com"};

arr_adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arry_data);

(III)视图加载适配器

listView.setAdapter(arr_adapter);

(3)监听器 ,程序和用户(或系统)交互的桥梁,每个监听器都是一个接口。

实现:让Activity类继承实现OnScrollListener、OnItemClickListener接口,并重写接口的方法,最后让listView加载这些监听器,即listView.setOnItemClickListener(this)、listView.setOnScrollListener(this);

  A. OnScrollListener

public void onScrollStateChanged(**,int scrollState)

{

switch(scrollState)

{

case SCROLL_STATE_FLING: //手指离开前 用力滑动,依靠惯性滚动ListView,此时手指已离开屏幕

可以在滚动时做动态添加item项

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

map.put("PIC",值);

map.put("TEXT",值);

list.add(map);

simp_adapter.notifyDataSetChanged();//通知UI主线程去更新,以适应数据源的变化。

break;

case SCROLL_STATE_IDLE: //ListView停止滑动

break;

case SCROLL_STATE_TOUCH_SCROLL: //ListView正在滑动,手指没有离开屏幕

break;

}

}

public void onScroll()

{

}

  B. OnItemClickListener

void onItemClick(**,**,position,**)

{

String text=listView.getItemAtPosition(position);

Toast.makeText(this,内容,Toast.LENGTH_SHORT).show();

}

(4)刷新适配器数据

notifyDataSetChanged

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值