1. package com.example.app5;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7.  
  8. import android.app.Activity;
  9. import android.os.Bundle;
  10. import android.view.Menu;
  11. import android.view.MenuItem;
  12. import android.view.View;
  13. import android.view.ViewTreeObserver.OnScrollChangedListener;
  14. import android.widget.AbsListView;
  15. import android.widget.AbsListView.OnScrollListener;
  16. import android.widget.AdapterView;
  17. import android.widget.AdapterView.OnItemClickListener;
  18. import android.widget.ArrayAdapter;
  19. import android.widget.ListView;
  20. import android.widget.SimpleAdapter;
  21. import android.widget.Toast;
  22. /*
  23. * ListView:Android系统中显示列表的空间
  24. * 数据适配器:将复杂的数据(数组。链表,数据库,集合)填充在指定视图界面上
  25. * ArrayAdapter(数组适配器):用于绑定格式单一的数据
  26. * 数据源:可以是集合或数组
  27. * SimpleAdapter(简单适配器):用于绑定格式复杂的数据
  28. * 数据源:只能是特定泛型的集合
  29. *
  30. * 数据适配器是连接数据源和视图界面的桥梁
  31. * 实现过程:新建适配器-》添加数据源到适配器-》视图加载适配器
  32. */
  33. /*
  34. * 监听器:
  35. * OnItemClickListener:可以处理视图中单个条目的点击事件
  36. * OnScrollListener:
  37. * 监测滚动的变化,可以用于视图在滚动中加载数据
  38. *
  39. * 监听器是程序和用户交互的桥梁
  40. */
  41. public class ListView1 extends Activity implements OnItemClickListener,OnScrollListener{
  42. private ListView listView;
  43. private ArrayAdapter<String>arr_adapter;
  44. private SimpleAdapter sim_adapter;
  45. private List<Map<String,Object>> dataList;
  46. @Override
  47. protected void onCreate(Bundle savedInstanceState) {
  48. super.onCreate(savedInstanceState);
  49. setContentView(R.layout.activity_listview);
  50. listView = (ListView)findViewById(R.id.listView2);
  51. //1.新建一个数据适配器
  52. //ArrayAdapter(上下文,当前ListView加载的每一个列表项所对应的布局文件)
  53. /*
  54. * SimpleAdapter:
  55. * context:上下文
  56. * data:数据源(List<? extends Map<String,?>> data 一个Map组成的list集合 )
  57. * 每个Map对应ListView中的一行
  58. * 每个Map(键值对)中的键必须包含所有在from中所指定的键
  59. * resource:列表项的布局文件ID
  60. * from:Map 中的键名
  61. * to:绑定数据视图中的ID,与from成对应关系
  62. *
  63. */
  64.  
  65. //2.适配器加载数据源
  66. String[] arr_data = {"zhangsan","lisi","wangwu","zhaoliu","zhouqi"};
  67. arr_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arr_data);
  68.  
  69. dataList = new ArrayList<Map<String,Object>>();
  70. sim_adapter = new SimpleAdapter(this, getData() ,R.layout.item1,new String[]{"image","text"},new int[]{ R.id.image, R.id.text});
  71.  
  72. //3.视图(listView)加载适配器
  73. // listView.setAdapter(arr_adapter);
  74. listView.setAdapter(sim_adapter);
  75. //设置监听器
  76. listView.setOnItemClickListener(this);
  77. listView.setOnScrollListener( this);
  78. }
  79. private List<Map<String,Object>> getData(){
  80. for(int i= 0;i<20;i++){
  81. Map<String,Object>map = new HashMap<String,Object>();
  82. map.put("i", R.drawable.pic2);
  83. map.put("text", "image"+(i+1));
  84. dataList.add(map);
  85. }
  86. return dataList;
  87. }
  88. @Override
  89. public void onScrollStateChanged(AbsListView view, int scrollState) {
  90. // TODO Auto-generated method stub
  91. //scrollState 滚动状态
  92. switch(scrollState){
  93. case SCROLL_STATE_FLING:
  94. System.out.println("用户在手指离开屏幕前,用力滑动了屏幕,视图惯性继续滑动");
  95. Map<String,Object> map = new HashMap<String,Object>();
  96. map.put("image", R.drawable.pic2);
  97. map.put("text", "添加项");
  98. dataList.add(map);
  99. sim_adapter.notifyDataSetChanged();
  100. break;
  101. case SCROLL_STATE_IDLE:
  102. System.out.println("视图已经停止滑动");
  103. break;
  104. case SCROLL_STATE_TOUCH_SCROLL:
  105. System.out.println("手指没有离开屏幕,视图正在滑动");
  106. break;
  107.  
  108. }
  109. }
  110. @Override
  111. public void onScroll(AbsListView view, int firstVisibleItem,
  112. int visibleItemCount, int totalItemCount) {
  113. // TODO Auto-generated method stub
  114.  
  115. }
  116. @Override
  117. public void onItemClick(AdapterView<?> parent, View view, int position,
  118. long id) {
  119. // TODO Auto-generated method stub
  120. String text = listView.getItemAtPosition(position)+"";
  121. Toast.makeText(this, position+"--"+text, Toast.LENGTH_SHORT).show();
  122.  
  123. }
  124.  
  125. }

Android_listView的更多相关文章

  1. Android_listview设置每条信息的间距

    Android_listview设置每条信息的间距 设置listView的item间距,可以在xml布局文件中的listView下设置xml属性: android:divider="#000 ...

  2. Android_ListView简单例子

    ListView是Android软件开发中非常重要组件之一,基本上是个软件基本都会使用ListView ,今天我通过一个demo来教大家怎么样使用ListView组件 activity_main.xm ...

  3. Android_ListView适配器

    ListView如何优化 复用convertView缓存(减少ListView绘制). 自定义静态类ViewHolder(减少findViewById次数),通过setTag().getTag()获取 ...

  4. Android开发10.1:UI组件适配器AdapterView(创建ListView,Adapter接口)

    @version:Android4.3 API18 @author:liuxinming 概述               AdapterView继承了ViewGroup,它的本质是容器       ...

  5. 安卓---下拉刷新---上拉加载---解决导入library等自生成库文件失败的问题

    本文的下拉刷新以及上拉加载都是用PullToRefresh实现的,关于PullToRefresh的介绍以及源码,网上可以找到很多,本人在此不再赘述. PullToRefresh是一套实现非常好的下拉刷 ...

  6. android 开发-ListView列表显示控件的实现

    列表的显示需要三个元素: 1.ListVeiw 用来展示列表的View. 2.适配器 用来把数据映射到ListView上的中介. 3.数据    具体的将被映射的字符串,图片,或者基本组件. 根据列表 ...

  7. Android layout的XML

    [注]此文是在学习andriod中的一些理解和总结,若有错望留言指教,谢谢 1 <RelativeLayout xmlns:android="http://schemas.androi ...

  8. 怎样使用ListView?

    怎样使用ListView? watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFC ...

随机推荐

  1. CF GYM 100703I Endeavor for perfection

    题意:有n个学习领域,每个领域有m个课程,学习第i个领域的第j个课程可以获得sij个技能点,在每个领域中选择一个课程,要求获得的n个技能点的最大值减最小值最小,输出符合要求的策略. 解法:尺取法.将课 ...

  2. 关于C#中static静态变量

    C#静态变量使用static 修饰符进行声明,在类被实例化时创建,通过类进行访问不带有 static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象进行访问一个类的所有实例的同一C#静 ...

  3. 进程通信之一 使用WM_COPYDATA C++及C#实现 z

    原文地址:http://blog.csdn.net/morewindows/article/details/6804157 进程间通信最简单的方式就是发送WM_COPYDATA消息.本文提供C++及C ...

  4. 【Python】Python-用大写字母打印你的名字

    与孩子一起编程,有个作业题:用大写字母打印你的名字. CCCC A RRRRR C C A A R R C A A R R C AAAAAAA RRRRR C C A A R R CCCC A A R ...

  5. ImagePacker

    [下载]:ImagePacker 0.0.2 [作用]:将多个图片打包到指定大小的图片中,并输出配置文件.类似于 TexturePacker,不过当前只支持 Starling 格式输出(因为我现在使用 ...

  6. 关于贴友的一个书本页面简单布局(html+css)的实现

    贴友需求:以html+css仿照书本的页面实现布局效果(见图) html代码: 1: <!-- 我的博客:http://www.ido321.com --> DOCTYPE HTML> ...

  7. 2016"百度之星" - 复赛(Astar Round3) 1003 拍照

    拍照 思路:先静态,离线树状数组,分别统计每个点向左向右能看到的船的数量.再枚举整个区间求最大值. 应为人和船都是动态的,假设船往左走,处理每个点看到向左最大船的数量,满足动态条件.就是向左的船一开始 ...

  8. PHP编码规范整理,很全很实用(图文版)

    有一个组织叫做“php互操作性框架制定小组”,这个小组的主要目的是制定各种PHP编码规范的,下面就是我根据小组提供的建议整理的一些常用的编码规范. PSR-1: 1.PHP代码文件必须以<?ph ...

  9. Hadoop概念学习系列之例子形象再谈Client、NameNode、元数据(三十一)

    Client相当于是送货人或提货人. NameNode相当于是仓库管理员. 元数据相当于是账本清单.

  10. hdu 5505 GT and numbers

    GT and numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...