Day7、ListView和适配器Adapter二
来源:互联网 发布:英雄无敌5mac作弊 编辑:程序博客网 时间:2024/06/05 03:33
一、再脑补一下,数据块:负责具体的逻辑和数据内容代码;视图块:负责具体的展示形式,即长什么样子;适配器块:负责把数据内容以何种姿势显示到视图上。
二、使用SimpleAdapter实现简单的图文混搭列表
1.在布局文件中编写代码
第一步:添加ListView标签(listview.xml)
第二步:编写行布局文件(item.xml)
2.在Activity中编写代码
第一步:获取ListView对象
第二步:准备数据源(List
3.代码块
<!--1、listview.xml代码--><?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ListView android:id="@+id/lv_play" android:layout_width="match_parent" android:layout_height="wrap_content"/></LinearLayout>
<!--2、item.xml代码--><?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ListView android:id="@+id/lv_play" android:layout_width="match_parent" android:layout_height="wrap_content"/></LinearLayout>
//MainActivity.java代码package com.oldtogether.adapterdemo2;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.widget.ListView;import android.widget.SimpleAdapter;public class MainActivity extends ActionBarActivity { // 创建数组,采用for循环进行遍历 private int[] imageIds = new int[] { R.drawable.daxiang, R.drawable.maozi, R.drawable.nangua, R.drawable.nanguobq, R.drawable.tiaopi, R.drawable.xiaolian, R.drawable.xin,R.drawable.weixin,R.drawable.hongx,R.drawable.xm }; private String[] titles = new String[] { "卖萌大象", "圣诞帽子", "愤怒南瓜", "难过表情", "调皮表情", "我倩的笑脸表情", "oldtogether爱心","微信","粉色少女心","一代撸" }; private String[] versions = new String[] { "版本:1.10", "版本:2.10", "版本:1.11", "版本:2.12", "版本:3.10", "版本:2.20","版本:5.20","版本:1.23","版本:2.21","版本:2.40", }; private String[] sizes = new String[] { "大小:32.01M", "大小:32.02M", "大小:23.01M", "大小:11.01M", "大小:41.01M","大小:11.01M","大小:33.01M","大小:33.01M","大小:33.01M","大小:33.01M",}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.listview); // 1、过的ListView对象 ListView lv = (ListView) findViewById(R.id.lv_play); // 2、数据源 List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); for (int i = 0; i < titles.length; i++) { Map<String, Object> map = new HashMap<String, Object>(); map.put("logo", imageIds[i]); map.put("title", titles[i]); map.put("version", versions[i]); map.put("size", sizes[i]); list.add(map); } // 3、设置适配器 SimpleAdapter adapter = new SimpleAdapter(this, // context上下文 list, // 数据源 R.layout.item, // 自定义的行布局 new String[] { "logo", "title", "version", "size" }, // 数据的来源,即key值 new int[] { R.id.iv_logo, R.id.title, R.id.version, R.id.size });// 与key值关联,根据id获得具体的资源 // 4、关联适配器 lv.setAdapter(adapter); }}
4.运行结果
三、心得总结
1.如果把界面比喻成一张宣纸,listview.xml文件的作用就像练毛笔字的米字形方格,假如要写一个“恒”字,那么行布局item.xml就是用黑色墨汁写的“恒”字,如果要在整张纸上用不同的颜色颜料写很多“恒”字,那么需要准备数据不同颜色的颜料,那么需要添加数据源。
2.自定义数据源时,对于大量的重复操作,则采用for循环,将所需的资源归纳到不同类型的数组中,遍历它即可。
3.设置适配器,和ArrayAdapter相比较,SimpleAdapter多了两个参数,并且此时添加的layout为自定义的行布局(而并非系统提供的行布局),这样可以将我们的逻辑本质(在米字方格中写不同的字)实现;而多出来的两个参数则是 from…to的意思,必须一一对应;即数据从哪里来,去哪里,去哪里得到资源的id,然后一一展现在“这张纸”上。
4.关于字体颜色,为了明显模拟器的运行效果,这里选择了蓝色作为对比,而我们常见的颜色是灰色(#eee)。
5.次Demo中常见的错误,在运行时,会出现xxxxxx stop.原因是出现空指针,原因在,在new数组时,会少写数组内的元素,比如上面代码中,假设有了title,version,size,但是在imageIds上了一一对应的图片资源。
四、夜深人静,12份的第一天刚刚开始,待会儿早餐记得喝包milk,美好的一天从奶子开始,全世界晚安。。。。
0 0
- Day7、ListView和适配器Adapter二
- ListView和Adapter(适配器)
- Adapter适配器和ListView
- ListView,GridView 和 适配器 Adapter
- 列表和适配器(ListView和Adapter)
- android listview和适配器adapter的使用
- 列表控件ListView和适配器Adapter
- Day6、ListView和适配器Adapter一
- Day8、ListView和适配器Adapter三
- ListView 适配器(Adapter)
- listview adapter 常用适配器
- ListView,GridView和适配器Adapter不得不说的秘密
- Android低阶【chapter-5】ListView和自定义适配器(Adapter)
- ListView和Adapter—数据适配器使用详情
- ListView和Adapter数据适配器的简单介绍
- Android UI基础之ListView 和适配器Adapter
- ListView 适配器(Adapter)优化
- ListView的自定义适配器Adapter
- 关于viewport的移动页面适配
- 迷宫算法全部解(搜索算法与剪枝思考)
- 混合开发(Hybrid App)之 Ionic【一】-- 认识Ionic,搭建开发环境,创建项目
- json和xml之间区别
- 不一样的倒计时View
- Day7、ListView和适配器Adapter二
- 解决——》SQL Server(MSSQLSERVER) 请求失败或服务未及时响应,有关详细信息,请参见事件日志或其他的适用的错误日志。
- WIFI模块ESP8266的使用指南(客户端和服务器两种模式建立)
- ODI 11g更换jdk版本方法
- Canvas和其绘制目标小结
- 训练集(train set) 验证集(validation set) 测试集(test set)
- MySQL将查询结果插入到数据表中
- Vue--过滤器
- 为什么调用 FragmentPagerAdapter.notifyDataSetChanged() 并不能更新其 Fragment?