Android_listView
2016-06-14 10:05
477 查看
package com.example.app5; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewTreeObserver.OnScrollChangedListener; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.Toast; /* * ListView:Android系统中显示列表的空间 * 数据适配器:将复杂的数据(数组。链表,数据库,集合)填充在指定视图界面上 * ArrayAdapter(数组适配器):用于绑定格式单一的数据 * 数据源:可以是集合或数组 * SimpleAdapter(简单适配器):用于绑定格式复杂的数据 * 数据源:只能是特定泛型的集合 * * 数据适配器是连接数据源和视图界面的桥梁 * 实现过程:新建适配器-》添加数据源到适配器-》视图加载适配器 */ /* * 监听器: * OnItemClickListener:可以处理视图中单个条目的点击事件 * OnScrollListener: * 监测滚动的变化,可以用于视图在滚动中加载数据 * * 监听器是程序和用户交互的桥梁 */ public class ListView1 extends Activity implements OnItemClickListener,OnScrollListener{ private ListView listView; private ArrayAdapter<String>arr_adapter; private SimpleAdapter sim_adapter; private List<Map<String,Object>> dataList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_listview); listView = (ListView)findViewById(R.id.listView2); //1.新建一个数据适配器 //ArrayAdapter(上下文,当前ListView加载的每一个列表项所对应的布局文件) /* * SimpleAdapter: * context:上下文 * data:数据源(List<? extends Map<String,?>> data 一个Map组成的list集合 ) * 每个Map对应ListView中的一行 * 每个Map(键值对)中的键必须包含所有在from中所指定的键 * resource:列表项的布局文件ID * from:Map 中的键名 * to:绑定数据视图中的ID,与from成对应关系 * */ //2.适配器加载数据源 String[] arr_data = {"zhangsan","lisi","wangwu","zhaoliu","zhouqi"}; arr_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arr_data); dataList = new ArrayList<Map<String,Object>>(); sim_adapter = new SimpleAdapter(this, getData() ,R.layout.item1,new String[]{"image","text"},new int[]{ R.id.image, R.id.text}); //3.视图(listView)加载适配器 // listView.setAdapter(arr_adapter); listView.setAdapter(sim_adapter); //设置监听器 listView.setOnItemClickListener(this); listView.setOnScrollListener( this); } private List<Map<String,Object>> getData(){ for(int i= 0;i<20;i++){ Map<String,Object>map = new HashMap<String,Object>(); map.put("i", R.drawable.pic2); map.put("text", "image"+(i+1)); dataList.add(map); } return dataList; } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // TODO Auto-generated method stub //scrollState 滚动状态 switch(scrollState){ case SCROLL_STATE_FLING: System.out.println("用户在手指离开屏幕前,用力滑动了屏幕,视图惯性继续滑动"); Map<String,Object> map = new HashMap<String,Object>(); map.put("image", R.drawable.pic2); map.put("text", "添加项"); dataList.add(map); sim_adapter.notifyDataSetChanged(); break; case SCROLL_STATE_IDLE: System.out.println("视图已经停止滑动"); break; case SCROLL_STATE_TOUCH_SCROLL: System.out.println("手指没有离开屏幕,视图正在滑动"); break; } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { // TODO Auto-generated method stub } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub String text = listView.getItemAtPosition(position)+""; Toast.makeText(this, position+"--"+text, Toast.LENGTH_SHORT).show(); } }
相关文章推荐
- 点击事件的四种写法
- Android音乐播放器获取Genres和Art album
- Android 自定义正方形布局
- Android各种view
- AndroidScreen 说明文档
- [Android官方Demo系列](API 15)AccelerometerPlay
- Android悬浮窗实现 使用WindowManager
- Android 常用 adb 命令总结
- Android 沉浸式状态栏、状态栏一体化、透明状态栏、仿iOS透明状态栏
- GitBook - AndroidStudioTraining
- Android控件开发——ListView
- android 基于Bmob的聊天——用户管理——注册
- Android实现将View保存成Bitmap的方法
- Android开发学习路线图
- Android项目的目录结构
- Android5.0+(Percent 百分比布局)
- Android.mk中的LOCAL_OVERRIDES_PACKAGES
- Android动画原理分析
- 关于Doze 模式下对AlarmManager 的影响
- android应用签名详细步骤