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

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();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: