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,它可以动态更新视图中所包含的数据。
相关文章推荐
- Android入门学习笔记整理(六)
- Android入门学习笔记整理(四)
- Android入门学习笔记整理(八)
- Android入门学习笔记整理(七)
- Android入门学习笔记整理(二)
- Android入门学习笔记整理(三)
- android 入门学习笔记 Button 常用的弹窗效果code
- android 入门学习笔记 取得文件架构、打开文件、判断文件MimeType 的方法
- Android入门学习笔记(二):Android开发环境的搭建
- android 入门学习笔记 利用bundle实现android,activity间消息的传递
- android 入门学习笔记 将ArrayList放入ArrayAdapter
- Android入门学习笔记(五):Activity与Intent
- Text-to-speech 入门与进阶学习笔记(android)
- Android入门学习笔记(三):第一个Android应用程序
- android 入门学习笔记 BIG5 与 UTF-8互转
- Android入门学习笔记之人机用户界面
- android 入门学习笔记 判断网页地址 邮箱 电话号码 符合要求的加链接~
- android 入门学习笔记 上传大文件
- Android开发入门学习笔记之三
- android 入门学习笔记 NotificationManager与Notification对象的应用