您的位置:首页 > 移动开发 > Android开发

Android入门学习笔记整理(五)

2017-07-23 17:24 519 查看

ListView

学习目标:

1.理解 ListView 的基础使用

2.学会熟练运用两种适配器( ArrayAdapter SimpleAdapter )

3.学会熟练运用两种监听器( OnScrollListener OnItemClickListener )

4.学会熟练运用适配器数据的刷新( notifyDataChanged )

数据适配器

http://www.imooc.com/video/1618

摘自 TowerRush

作用:把数据填充在指定视图界面上

ArrayAdapter:用于绑定格式单一数据

数据源:集合或者数组

SimpleAdapter:用于绑定格式复杂的数据

数据源:只能是特定泛型的集合

数据适配器是连接数据源和视图界面的桥梁

实现过程:新建适配器->添加数据源到适配器->视图加载适配器

ArrayAdapter

http://www.imooc.com/video/1620

摘自 locker

(ArrayAdapter)数据适配器的实现过程:

1.新建适配器

arr_adapter=new ArrayAdapter(上下文(this),当前ListView加载的每一个列表项所对应的布局文件(android.R.layout.simple_list_item_1),数据源(String[]arr_data={“1”,”2”,”3”,”4”}));

2.添加数据源到适配器(上一步已包含)

3.视图(ListView)加载适配器

listView.setAdapter(arr_adapter);

SimpleAdapter

http://www.imooc.com/video/1621

摘自 locker

(SimpleAdapter)数据适配器的实现过程:

1.新建适配器

simp_adapter=new SimpleAdapter(context,data,resource,from,to);

context:上下文(this)

data:有特定泛型的集合数据源–一个Map所组成的List集合

(新建自定义
List<Map<String,Object>> dataList
并通过方法返回在此处—详见笔记附录1)

<每一个Map都会去对应列表中的一行

每一个Map中的键必须包含所有在from中所指定的键>

resource:列表项的布局文件(自定义布局)

from:记录Map中的键名(new String[]{布局文件的name})

to:绑定数据视图中的ID,与from成对应关系(new int[]{布局文件中ID})

2.添加数据源到适配器(上一步已包含)

3.视图(ListView)加载适配器

listView.setAdapter(simp_adapter);

笔记附录:

1.返回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.ic_launcher);
map.put("text","BUPT NO."+i);
dataList.add(map);
}
return dataList;
}


ListView—- 监听器

http://www.imooc.com/video/1622

http://www.imooc.com/video/1623

摘自 i红姬

1、监听ListView列表项点击事件:onItemClick

2、监听ListView滚动事件,onScrollChangedListener

SCROLL_STATE_FLING -> 用户在手指离开屏幕之前,由于用力划了一下,视图任然依靠惯性,继续划了一段距离。

SCROLL_STATE_IDLE -> 视图已经停止滑动。

SCROLL_STATE_TOUCH_SCROLL -> 手指没有离开屏幕,手指正带着屏幕滑动。

如果要动态修改数据,那么需要adapter.notifyDataSetChanged();如果修改了数据,而没有通知listview刷新,那么将会出错。

实现过程:

摘自 Mr_Yuanxiansheng

Activity中加入接口 OnItemClickListener

使用ListView加载listView.setOnItemClickListener(this);

修改onItemClick方法

String text=listView.getItemAtPosition(position)+"";

Toast.makeText(<上下文>this,<打印内容>"position"+position+" text="+text,

<打印时长>Toast.LENGTH_SHORT.show());


事件监听器(OnScrollListener):监听滚动时加载数据的事件

实现过程:

1. Activity中加入接口
OnScrollListener


2. 使用ListView加载
listView.setOnScrollListener(this);


3. 修改
onScrollStateChanged
方法

switch(scrollState){
case SCROLL_STATE_FLING:
Log.i("Main","用户在手指离开屏幕之前,由于用力滑了一下,视图仍依靠惯性继续滑动");
Map<String,Object>map=new HashMap<String,Object>();
map.put("pic",R.drawable.ic_launcher);
map.put("text","增加项");
dataList.add(map);
simp_adapter.notifyDataSetChanged();//刷新
break;
case.SCROLL_STATE_IDLE:
Log.i("Main","视图已经停止滑动");
break;
case:
Log.i("Main","手指没有离开屏幕,视图正在滑动");
break;
}


笔记附录:

1.Toast.makeText.show方法:在屏幕下方弹出提示内容(并非窗口)

摘自 慕粉3595949

Toast.makeText(this, "string string string",Toast.LENGTH_LONG).show();


这句的意思:

Toast
:是一个类,主要管理消息的提示。

makeText()
,是Toast的一个方法,用来显示信息,分别有三个参数。

第一个参数:this,是上下文参数,指当前页面显示

第二个参数:“string string string ”是你想要显示的内容,也可以是“你好!”。这个是随便定义的,显示你想要显示的内容。

第三个参数:
Toast.LENGTH_LONG
,是你指你提示消息,显示的时间,这个是稍微长点儿,对应的另一个是
Toast.LENGTH_SHORT
,这个时间短点儿,大概2秒钟。

show()
,表示显示这个Toast消息提醒,当程序运行到这里的时候,就会显示出来,如果不调用
show()
方法,这个Toast对象存在,但是并不会显示,所以一定不要忘记。

总结

(1)SimpleAdapter的构造方法中参数较多,写的时候不要着急,要对应好的布局文件中的id

(2)监听器和适配器是通用于很多android控件上,不局限于ListView

(3)本课案例通过onScrollListener监听了用户手指滑动的动作,实际上我们常见的列表下拉刷新就是依此扩展的。

(4)熟练运用notifyDatasetchanged,它可以动态更新视图中所包含的数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: