android--------listview之适配器
ListView之适配器的使用,包含了ArrayAdapter,SimpleAdapter ,BaseAdapter等适配器。
1:ArrayAdapter
/****
*
*
* ArrayAdapter
* @author Administrator
*
*/
public class ArrayAdapterActivity extends Activity { private ListView mListView;
//定义一个String数组,数组里的数据就是ListView里的一项
String[] arrayDate={"笑傲江湖","风清扬","令狐冲","岳不群","乔峰","虚竹","段誉","中神通","东邪","西毒","南帝","北丐"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_arrayadapter);
initView();
}
private void initView() {
mListView=(ListView)findViewById(R.id.listView1);
//新建一个数组适配器ArrayAdapter绑定数据,参数(当前的Activity,布局文件,数据源)
//android.R.layout.simple_list_item_1 本身自带布局
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,arrayDate);
//视图(ListView)加载适配器
mListView.setAdapter(adapter);
mListView.setOnItemClickListener(new OnItemClickListener() { @Override
public voidonItemClick(AdapterView<?> parent, View view,
int position,long id) { Toast.makeText(ArrayAdapterActivity.this,arrayDate[position],1).show(); }
});
} }
预览效果:
2:SimpleAdapter
使用simpleAdapter的数据用一般都是HashMap构成的List,list的每一节对应ListView的每一行。HashMap的每个键值数据映射到布局文件中对应id的组件上。
归纳步骤:
1、准备数据源:指定由Map组成的List数据源
2、新建适配器,设置键值名和对应控件id,绑定数据
3、视图加载适配器
参数:
new SimpleAdapter(context, data, resource, from, to)
context ------SimpleAdapter关联的View的运行环境
data ---------一个Map组成的List。在列表中的每个条目对应列表中的一行,每一个map中应该包含所有在from参数中指定的键
resource ------ 一个定义列表项的布局文件的资源ID。布局文件将至少应包含那些在to中定义了的ID
from ---------- 一个将被添加到Map映射上的键名
to -------------将绑定数据的视图的ID,跟from参数对应
/****
*
*
* SimpleAdapter
*
* @author Administrator
*
*/
public class SimpleAdapterActivity extends Activity { private ListView mshow_list;
String[] name = { "张三","李四","小星星","静静","明明","小张" }; int[] img = {R.drawable.a2, R.drawable.a3,R.drawable.a4, R.drawable.a5,R.drawable.a6,R.drawable.ic_launcher};
protected void onCreate(android.os.Bundle savedInstanceState) { super.onCreate(savedInstanceState);
//加载布局文件
setContentView(R.layout.activity_simpleadapter);
//2.获取listview控件的对象
mshow_list=(ListView)findViewById(R.id.show_listview); /**
* 第四步:定义SimpleAdapter(并加载对应item布局文件,获得对应的keY,获得对应item布局文件中的组件的id
*
* 第二个参数data:数据源
* 第三个参数resource :listView每个item对应的布局文件
* 第四个参数 from:
* 第五个参数to:
*new String[]{对应的key}v
*/
SimpleAdapter simpleAdapter=new SimpleAdapter(this, get_data(),
R.layout.item_simple,new String[]{
"type","age","img"},newint[]{R.id.type_txt,R.id.age_txt,R.id.img}); //第五步:通过setAdapter将适配器绑定到listView控件
mshow_list.setAdapter(simpleAdapter); }; /***
* 数据源
*
*
*/
private ArrayList<Map<String, Object>> get_data() {
// 定义一个ArrayList的集合(集合中又封装一个map类型的集合)
ArrayList<Map<String, Object>>data_list = new ArrayList<Map<String,Object>>();
for (int i = 0; i<name.length; i++) {
// key,value intstring map不能new map
Map<String, Object> data_map = newHashMap<String, Object>();
data_map.put("type", name[i]);
data_map.put("age", i + 10+"岁");
data_map.put("img", img[i]);
// 将map集合添加(封装)到ArrayList集合中
data_list.add(data_map); }
// 返回ArrayList集合
return data_list; }
}
预览效果:
3:BaseAdapter
使用BaseAdapter实现复杂的ListView的步骤:
1 首先准备好需要显示在LiseView中的数据 ——List
public class MyAdapter extends BaseAdapter {
private String[] datas;
private LayoutInflater inflater;
private int[] imgs;
public MyAdapter(Contextcotext, String[] datas,int[] imgs) {
this.datas = datas;
inflater =LayoutInflater.from(cotext);
this.imgs=imgs;
}
/**
*
* 返回的item总数量
*
*/
public intgetCount() {
return datas.length;
}
/**
*
* item的位置
*
*/
@Override
public Object getItem(int position){
// TODOAuto-generated method stub
return datas[position];
}
/**
*
* 对应每个item里面控件的id
*
*/
@Override
public longgetItemId(int position) {
// TODOAuto-generated method stub
return position;
}
@Override
public View getView(int position,View convertView, ViewGroup parent) {
ViewHolde viewHolde = null;
if (null ==convertView) {
// 实例化 ViewHolde对象
viewHolde = newViewHolde();
convertView = inflater.inflate(
R.layout.item_listview,null);
viewHolde.img=(ImageView)convertView.findViewById(R.id.img);
viewHolde.mtype_txt =(TextView) convertView
.findViewById(R.id.text);
convertView.setTag(viewHolde);
}
else {
viewHolde = (ViewHolde)convertView.getTag();
}
viewHolde.mtype_txt.setText(datas[position]);
viewHolde.img.setImageResource(imgs[position]);
// 返回item视图
returnconvertView;
}
class ViewHolde {
TextView mtype_txt;
ImageView img;
}
}
预览效果:
项目源码:
http://download.csdn.net/detail/dickyqie/9609752
android--------listview之适配器的更多相关文章
- android listview万能适配器
参考 Android 快速开发系列 打造万能的ListView GridView 适配器 Hongyang public class CommonViewHolder { private Con ...
- Android开发之适配器-ListView适配器的重复数据
适配器是Android中的数据与View视图的桥梁,作用就是将数据通过适配器显示到对应的View视图上. 工作中,在用ListView做适配器数据时候,有些人肯定碰见过,如何优化效率,但是又出现重复数 ...
- Android 快速开发系列 打造万能的ListView GridView 适配器
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38902805 ,本文出自[张鸿洋的博客] 1.概述 相信做Android开发的写 ...
- Android ListView ArrayAdapter 的简单使用
前面写了3篇关于android的文章,其中的演示程序都写在了一个工程中,当时为了方便测试就在启动页MainActivity中放了3个按钮,点击不同的按钮进入不同的示例程序页面,MainActivity ...
- Android 常用数据适配器SimpleAdapter
在<Android 常用数据适配器ArrayAdapter>中介绍了ArrayAdapter数据适配器.但是存在一个缺陷,那就是条目的图标都固定相同,要显示每个条目的图标都不相同,那么使用 ...
- Android listview与adapter用法
listview与adapter用法 博客分类: android 一个ListView通常有两个职责. (1)将数据填充到布局. (2)处理用户的选择点击等操作. 第一点很好理解,ListView ...
- android ListView的介绍和优化
xml设计 <?xml version="1.0"?> -<RelativeLayout tools:context=".MainActivity&qu ...
- Android ListView从网络获取图片及文字显示
上一篇文章说的是ListView展示本地的图片以及文本,这一篇说一下如何从网络获取图片以及文本来显示.事实上,一般是先获取Josn或sml数据,然后解释显示.我们先从网上获取xml,然后对其进行解析, ...
- Android ListView动态更新数据
ListView就是可以显示一行行Item的控件,有时候数据非常多,通常需要分页显示,但为了减少用户的输入,我们可以动态更新ListView,把下一页要显示的数据的添加到当前ListView中. 先看 ...
- android ListView用法介绍
ListView在Android开发中是比较常用的组件,它是以列表的形式展示内容,并且还可以处理用户的选择与点击等操作: LIstView显示数据一般需要三方面: (1)ListView组件:用来展示 ...
随机推荐
- Python: 序列list:保持元素顺序同时消除重复值
问题:怎样在Python的一个序列上面保持元素顺序的同时消除重复的值?answer:如果序列上的值都是hashable 类型,那么可以很简单的利用集合或者生成器来解决这个问题. eg1: def de ...
- Python 运算符与基本数据类型
一.运算符 1.算数运算: 2.比较运算: 3.赋值运算: 4.逻辑运算: 5.成员运算: 二.基本数据类型 1.空(None) 表示该值是一个空对象,空值是Python里一个特殊的值,用None表示 ...
- Hive 常用优化参数
常用调优测试语句 : ①显示当前hive环境的参数值: set 参数名; 如: hive> set mapred.map.tasks;mapred.map.tasks; ②设置hi ...
- Linux基础命令---paste
paste 将指定的文件按照列的方式合并,将结果显示到标准输出设备上,相当于两个并列的cat命令. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.F ...
- pyDay6
内容来自廖雪峰的官方网站 1.在Python中,代码不是越多越好,而是越少越好.代码不是越复杂越好,而是越简单越好,1行代码能实现的功能,决不写5行代码.请始终牢记,代码越少,开发效率越高. 2.取指 ...
- awk之match函数
功能:match函数是用于个性化定制搜索模式. 例子: 文件内容: this is wang ,not wan that is chen, not che this is chen ,and wang ...
- CP2102
1概述 CP2102其集成度高,内置USB2.0全速功能控制器.USB收发器.晶体振荡器.EEPROM及异步串行数据总线(UART),支持调制解调器全功能信号,无需任何外部的USB器件.CP2102与 ...
- python字符串、列表和文件对象总结
1.字符串是字符序列.字符串文字可以用单引号或者双引号分隔. 2.可以用内置的序列操作来处理字符串和列表:连接(+).重复(*).索引([]),切片([:])和长度(len()).可以用for循环遍历 ...
- python中的迭代器和生成器学习笔记总结
生成器就是一个在行为上和迭代器非常类似的对象. 是个对象! 迭代,顾名思意就是不停的代换的意思,迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果.每一次对过程的重复称为一次“迭代”,而 ...
- UVA 3942 Remember the Word (Trie+DP)题解
思路: 大白里Trie的例题,开篇就是一句很容易推出....orz 这里需要Trie+DP解决. 仔细想想我们可以得到dp[i]=sum(dp[i+len[x]]). 这里需要解释一下:dp是从最后一 ...