Android ListView/GridView 中Adapter的用法(1)
2016-07-18 13:49
363 查看
Android中的布局控件主要分为简单控件和复杂控件两种,而其中ListView 由于其用法较为复杂抽象,也是学习Android界面编程的一大难点,下面笔者就以多年的开发经验讲解一下ListView 中SimpleAdapter的用法。
![](https://img-blog.csdn.net/20160718135205747?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
由上图可以看出,Listview就像一个ArrayList,里面用adapter来填充,事实上ArrayList在ListView中扮演了重要角色。
SimpleAdapter使用详解
首先我们需要新建一个ListView,在xml文件中,在此不再赘述过程。
对于使用ListView,主要分为三点:
1.处理数据,我们需要将要放置的数据进行处理,以便在ListView中使用。
2.得到adapter。
3.填充到ListView中。
以下我将结合示例代码讲解。
1.处理数据
由于数据是变化多样的,而ListView中只能存储特定格式的,所以我们要对数据进行处理
ListView中的数据以ArrayList<HashMap<String,String>>的格式来存储。看起来是不是很复杂又很熟悉,没错,这就是ArrayList与HashMap的结合体,每一个ArrayList元素是一个HashMap,其中HashMap的key以及value需要为String类型。有了这样的理论基础我们就可以开始写示例了,下面我将模拟手机通讯录,号码由随机数产生
![](https://img-blog.csdn.net/20160718135333266?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
以上为数据处理函数,处理的数据变为ArrayList<HashMap<String,String>>类型,第一步结束。
2.得到adapter
此步骤使用系统提供的SimpleAdapter完成
SimpleAdapter sa = new SimpleAdapter(SimpleAdapterActivity.this,
list,
R.layout.item_line2,
new String[]{"name","phonenumber"},
new int[]{R.id.name,R.id.number});
五个参数分别代表:当前上下文,处理好的list,子布局,HashMap中的key,子布局id.
ListView就像一个容器,划分了好多空间,每一块空间如何使用,就需要子布局,由于我要放置姓名手机号,所以使用两个TextView。
那么为何要将子布局id输入呢,此处和第四个参数有关联,系统会把对应key的value值放在对应的子布局上,也就是将数据放到指定地点。
3.放置adapter
此处lv为ListView实例,调用setAdapter方法。
lv.setAdapter(sa);
以上就是SimpleAdapter的使用方法,那么如何监听SimpleAdapter呢,可以使用setOnItemClickListener方法
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
/ / TODO Auto-generated method stub
Toast.makeText(SimpleAdapterActivity.this, arg2 + " ",Toast.LENGTH_SHORT).show();
}
});
其中arg2参数代表单击的ListView中的行位置。
以上就是SimpleAdapter的使用方法,BaseAdapter将会稍后介绍。敬请期待
由上图可以看出,Listview就像一个ArrayList,里面用adapter来填充,事实上ArrayList在ListView中扮演了重要角色。
SimpleAdapter使用详解
首先我们需要新建一个ListView,在xml文件中,在此不再赘述过程。
对于使用ListView,主要分为三点:
1.处理数据,我们需要将要放置的数据进行处理,以便在ListView中使用。
2.得到adapter。
3.填充到ListView中。
以下我将结合示例代码讲解。
1.处理数据
由于数据是变化多样的,而ListView中只能存储特定格式的,所以我们要对数据进行处理
ListView中的数据以ArrayList<HashMap<String,String>>的格式来存储。看起来是不是很复杂又很熟悉,没错,这就是ArrayList与HashMap的结合体,每一个ArrayList元素是一个HashMap,其中HashMap的key以及value需要为String类型。有了这样的理论基础我们就可以开始写示例了,下面我将模拟手机通讯录,号码由随机数产生
以上为数据处理函数,处理的数据变为ArrayList<HashMap<String,String>>类型,第一步结束。
2.得到adapter
此步骤使用系统提供的SimpleAdapter完成
SimpleAdapter sa = new SimpleAdapter(SimpleAdapterActivity.this,
list,
R.layout.item_line2,
new String[]{"name","phonenumber"},
new int[]{R.id.name,R.id.number});
五个参数分别代表:当前上下文,处理好的list,子布局,HashMap中的key,子布局id.
ListView就像一个容器,划分了好多空间,每一块空间如何使用,就需要子布局,由于我要放置姓名手机号,所以使用两个TextView。
那么为何要将子布局id输入呢,此处和第四个参数有关联,系统会把对应key的value值放在对应的子布局上,也就是将数据放到指定地点。
3.放置adapter
此处lv为ListView实例,调用setAdapter方法。
lv.setAdapter(sa);
以上就是SimpleAdapter的使用方法,那么如何监听SimpleAdapter呢,可以使用setOnItemClickListener方法
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
/ / TODO Auto-generated method stub
Toast.makeText(SimpleAdapterActivity.this, arg2 + " ",Toast.LENGTH_SHORT).show();
}
});
其中arg2参数代表单击的ListView中的行位置。
以上就是SimpleAdapter的使用方法,BaseAdapter将会稍后介绍。敬请期待
相关文章推荐
- Android调用系统软件打开文件(包括apk文件)
- Android开发之ViewPager+ActionBar+Fragment实现响应式可滑动Tab
- Android6.0 属性系统
- GitHub优秀的Android开源项目
- android.content.res.Resources$NotFoundException: String resource ID #0xffffffff
- Android Studio调试
- 你所不知道的Android Studio调试技巧
- Android ActionBar的基本用法
- android中ImageView的adjustViewBounds属性的作用
- AndroidStudio中导入SlidingMenu报错解决方案
- AndroidStudio中导入SlidingMenu报错解决方案
- AndroidStudio中导入SlidingMenu报错解决方案
- Unable to resolve target 'android-8',INSTALL_FAILED_UPDATE_INCOMPATIBLE和failed to start daemon等问题的解决
- Android ListView at android.widget.AbsListView$RecycleBin.addScrapView
- opencv4android 常用函数API(一)
- IOS&Android通用屏幕控制(移动旋转缩放)
- Android中 WebView与Js的交互2
- IOS&Android通用屏幕控制(移动旋转缩放)
- Android APK安装与卸载机制
- Android 中轴时光轴