前言:

在写适配器时,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的更多相关文章

  1. C++STL模板库适配器之优先级队列

    目录 适配器之优先级队列 一丶优先级队列简介(priority_queue) 二丶优先级队列代码演示 1.优先级队列代码以及使用简介 适配器之优先级队列 一丶优先级队列简介(priority_queu ...

  2. C++STL模板库适配器之queue队列

    目录 适配器之队列 一丶队列简介 二丶队列(queue)代码操作 1.常用方法 适配器之队列 一丶队列简介 队列是先进先出的数据结构. 在STL中使用 queue表示. 底层使用的是序列容器deque ...

  3. Android适配器之ArrayAdapter、SimpleAdapter和BaseAdapter的简单用法与有用代码片段(转)

    摘自:http://blog.csdn.net/shakespeare001/article/details/7926783 Adapter是连接后端数据和前端显示的适配器接口,是数据Data和UI( ...

  4. [转]Android适配器之ArrayAdapter、SimpleAdapter和BaseAdapter的简单用法与有用代码片段

      收藏ArrayAdapter.SimpleAdapter和BaseAdapter的一些简短代码片段,希望用时方便想起其用法. 1.ArrayAdapter 只可以简单的显示一行文本 代码片段: A ...

  5. 函数对象适配器之ptr_fun的使用示例

    //============================================================================ // Name : CopyInts4.c ...

  6. 容器适配器之priority_queue

    template <class T, class Container = vector<T>,                class Compare = less<type ...

  7. 容器适配器之stack

    参见http://www.cplusplus.com/reference/stack/stack/ template<class T, class Container = deque<T& ...

  8. 容器适配器之queue

    转载http://blog.csdn.net/thefutureisour/article/details/7751846容器适配器容器适配器其实就是一个接口转换装置,使得我们能用特定的方法去操作一些 ...

  9. C++STL模板库适配器之stack容器

    目录 适配器 一丶适配器简介 二丶栈(stack)用法 1.栈的常用方法 适配器 一丶适配器简介 Stl中的适配器,有栈 (stack) 队列 queue 根priority_queue 适配器都是包 ...

随机推荐

  1. 使用TortoiseGit处理代码冲突

    使用TortoiseGit处理代码冲突  https://www.cnblogs.com/jason-beijing/p/5718190.html 场景一  user0 有新提交 user1 没有pu ...

  2. 什么是Nib文件

    Nib文件是一种特殊类型的资源文件,它用于保存iPhone OS或Mac OS X应用程序的用户接口.Nib文件是Interface Builder文档.通常您会使用Interface Builder ...

  3. Python 基础之python运算符

    一.运算符 1.算数运算符 + - * / // % ** var1 = 5var2 = 8 #(1)  + 加res = var1 + var2print(res) # (2)  -  减res = ...

  4. 《java核心技术:卷1》PDF版 和 Word版下载

    链接:https://pan.baidu.com/s/1OcpdZ4wfeo55xeJQQBHXRg 提取码:hds0

  5. zabbix server 安装部署

    一:安装zabbix服务端 1.部署准备 命令:iptables -F     #关闭防火墙命令:systemctl stop firewalld    #关闭防火墙 设置解析,自建yum源 命令:c ...

  6. leetcode刷题-- 1. 双指针

    这里的题是根据 CS-Notes里的顺序来一步步复习. 双指针 165两数之和 II - 输入有序数组 题目描述 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返 ...

  7. Linux命令(1)

    cd <directory> Short for "change directory". The shorthand name for the current dire ...

  8. axios设置请求头失效的问题

    前言:因为在使用vue-element-admin框架时遇到了设置请求头失效的问题,在后来发现是代理跨域问题,所以又简单理解了一下跨域. 出现的问题是我在axios拦截器上设置了请求头token,但是 ...

  9. 如何让浏览器的左上角显示自己的logo的小诀窍

    很简单,只需要在head头部加上以下代码 <link rel="icon" href="图片路径" type="image/x-icon&quo ...

  10. 浏览器之本地缓存存储 localStorage 和 sessionStorage的区别以及用法

    区别: localStorage永久保存在浏览器  :sessionStorage在浏览器关闭之后存储的数据就会销毁 用法:两者用法差不多,但是取值有所不同 编辑页面逻辑代码为: 这是给 id=btn ...