适配器之SimpleAdapter
前言:
在写适配器时,SimpleAdapter会经常使用到,虽然他比ArrayAdapter复杂,但是也提供了更多的功能
正文:
我们接下来先从SimpleAdapter中较为简单的显示两行文本开始讲解
来直接上代码
在主活动中添加
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent">
我们在自己写一个布局文件
因为我们写的目的是显示两行文本,在上面显示数据,下面显示简介
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/date"
android:text="数据"
android:textSize="10sp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/intro"
android:text="简介"
android:textSize="20sp"/> </LinearLayout>
接下来是Java代码:
package com.example.administrator.testsimpleadapter; import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects; public class MainActivity extends AppCompatActivity {
private ListView listview;
private SimpleAdapter adapter;
private List<Map<String,Object>>list;
private Map<String,Object>map;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化View
listview=(ListView)findViewById(R.id.listview);
//初始化数据
list=new ArrayList<Map<String,Object>>();
for (int i=0;i<=40;i++){
map=new HashMap<String,Object>();
map.put("数据","数据为"+i);
map.put("简介","简介为"+i);
list.add(map);
}
//初始化适配器
String[]form={"数据","简介"};
int[]to={R.id.date,R.id.intro};
adapter=new SimpleAdapter(MainActivity.this,list,R.layout.simple_item,form,to);
listview.setAdapter(adapter);
}
}
初始化AdapterView
17行,26行,39行都是和AdapterView有关前两个是为了初始化AdapterView,最后一个是为了把Adapter添加到listview中显示
初始化数据源
接下来讲一下初始化数据,SimpleView使用的数据都是用Map<String,?>其键必须为String型,值可以为任意,所以在初始化list是都用到
private List<Map<String,Object>>list=new ArrayList<Map<String,Object>>();
初始化Adapter
接下来是初始化SimpleAdapter适配器,其参数一是上下文对象,参数二是数据源,参数三是布局资源,参数四为String型数组,其值为数据源中的键,参数四int型数组为布局文件中控件的id,与参数四对应,比如第一个控件显示参数四数组中的第一个键的值
下面介绍SimpleAdapter图文混排
因为是图文混排所以必须有显示图片和文字的地方,在layout中添加simple_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView
android:padding="4dp"
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/img"
android:src="@drawable/qq"
android:scaleType="fitXY"/>
<TextView
android:padding="4dp"
android:layout_marginLeft="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/name"
android:text="名字"
android:layout_toRightOf="@id/img"
android:textSize="20sp"
/>
<TextView
android:id="@+id/intro"
android:padding="4dp"
android:layout_marginLeft="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="简介"
android:textSize="22sp"
android:layout_toRightOf="@id/img" android:layout_alignBottom="@id/img"
android:layout_alignLeft="@id/name"/>
</RelativeLayout>
接下来是Java代码
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; public class MainActivity extends AppCompatActivity {
private ListView listview;
int[]imag={R.drawable.qq};
String[]name={"聊天"};
private List<Map<String,Object>>list;
private Map<String,Object>map;
private SimpleAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化适配器view
listview=(ListView)findViewById(R.id.listview);
//初始化数据源
list=new ArrayList<Map<String,Object>>();
for (int i=0;i<name.length;i++){
map=new HashMap<String,Object>();
map.put("img",imag[i]);
map.put("name",name[i]);
map.put("intro","这是款不错的"+name[i]+"软件");
list.add(map);
}
String[]form={"img","name","intro"};
int []to={R.id.img,R.id.name,R.id.intro};
//设置适配器
adapter=new SimpleAdapter(MainActivity.this,list,R.layout.pic_item,form,to);
listview.setAdapter(adapter);
}
}
和上面的两行文字显示差不多,就是在第34行代码中另外加了ImageView的id,显示的内容也有图片
适配器之SimpleAdapter的更多相关文章
- C++STL模板库适配器之优先级队列
目录 适配器之优先级队列 一丶优先级队列简介(priority_queue) 二丶优先级队列代码演示 1.优先级队列代码以及使用简介 适配器之优先级队列 一丶优先级队列简介(priority_queu ...
- C++STL模板库适配器之queue队列
目录 适配器之队列 一丶队列简介 二丶队列(queue)代码操作 1.常用方法 适配器之队列 一丶队列简介 队列是先进先出的数据结构. 在STL中使用 queue表示. 底层使用的是序列容器deque ...
- Android适配器之ArrayAdapter、SimpleAdapter和BaseAdapter的简单用法与有用代码片段(转)
摘自:http://blog.csdn.net/shakespeare001/article/details/7926783 Adapter是连接后端数据和前端显示的适配器接口,是数据Data和UI( ...
- [转]Android适配器之ArrayAdapter、SimpleAdapter和BaseAdapter的简单用法与有用代码片段
收藏ArrayAdapter.SimpleAdapter和BaseAdapter的一些简短代码片段,希望用时方便想起其用法. 1.ArrayAdapter 只可以简单的显示一行文本 代码片段: A ...
- 函数对象适配器之ptr_fun的使用示例
//============================================================================ // Name : CopyInts4.c ...
- 容器适配器之priority_queue
template <class T, class Container = vector<T>, class Compare = less<type ...
- 容器适配器之stack
参见http://www.cplusplus.com/reference/stack/stack/ template<class T, class Container = deque<T& ...
- 容器适配器之queue
转载http://blog.csdn.net/thefutureisour/article/details/7751846容器适配器容器适配器其实就是一个接口转换装置,使得我们能用特定的方法去操作一些 ...
- C++STL模板库适配器之stack容器
目录 适配器 一丶适配器简介 二丶栈(stack)用法 1.栈的常用方法 适配器 一丶适配器简介 Stl中的适配器,有栈 (stack) 队列 queue 根priority_queue 适配器都是包 ...
随机推荐
- 「Luogu P3078 [USACO13MAR]扑克牌型Poker Hands」
本题有\(O(N)\)的优秀做法,但是因为在考场上不一定能想到,就来分享一种\(O(N\log_2N)\)的做法.虽然有点慢,但是可以过. 前置芝士 线段树:提高组及以上必备内容,不会的同学可以学习一 ...
- Centos7 iptables firewalld防火墙与selinux配置
一.iptables防火墙 1.基本操作 # 查看防火墙状态 service iptables status # 停止防火墙 service iptables stop # 启动防火墙 service ...
- 眼镜蛇扫描器2.3【旁注,目录扫描,md5解密,后台破解,0day】
功能: 1):旁注查询 引用站长工具 2):目录扫描 支持ASP PHP JSP ASPX 以及普遍存在漏洞的目录 速度还好.几乎和御剑差不多 3):0day扫描, 仿的熊眼 0day是 C ...
- list的三个子类的特点
- 【剑指Offer面试编程题】题目1388:跳台阶--九度OJ
题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n< ...
- Memcached 最新版本发布,不再仅仅是个内存缓存了
导读 Memcached 1.5.18和之后版本可以在服务重启时恢复内存缓存.新版本还通过DAX文件系统挂载来实现缓存持久性功能. 可以通过在启动选项使用该功能: -e /tmpfs_mount/me ...
- MySQL 常用SQL 汇总
1.查看当前应用连接,连接数突增排查 select user,SUBSTRING_INDEX(host,':',1) as ip , count(*) as count,db from informa ...
- 1-m*n循环填数(用标记数组)blibli2018秋招第三题一个类型
#include <iostream> #include<string> #include<algorithm> using namespace std; ; in ...
- springmvc教程(1)
idea搭建springmvc maven项目 jdk:1.8 maven:Bundled (Maven 3) idea版本: 开始搭建第一个springmvc maven项目 1.点击File-&g ...
- 虚拟机字节码指令表 JVM
虚拟机字节码指令表 标签(空格分隔): Java基础 JVM 记录虚拟机字节码指令,方便分析.以下内容来自<深入理解Java虚拟机> 字节码 助记符 指令含义 0x00 nop 什么都不做 ...