适配器之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 适配器都是包 ...
随机推荐
- Spring开发踩坑记录
#1 @EnableEurekaServer无法正常import原因是spring-cloud-dependencies版本太低,改成高版本的Edgware.SR4即可.参考:https://www. ...
- 安卓手机的屏幕规格很多。app开发者在设计User Interface的时候,要怎么处理,才能适应不同屏幕大小?
在app store下载应用时经常看到:此App已针对iPhone 5 进行优化.可是Android手机屏幕规格这么多,相差这么远.难道要针对每个尺寸都进行一次优化吗?(题主非专业人士,看到2014年 ...
- redhat 7.6 rsync 配置,实时同步脚本
1.查看rsync,并安装 yum install rsync -y 2.配置/etc/rsyncd.conf文件 建议cp一份作为备份,清空内容复制以下配置 [服务端配置]log file = /v ...
- 《Interest Rate Risk Modeling》阅读笔记——第九章:关键利率久期和 VaR 分析
目录 第九章:关键利率久期和 VaR 分析 思维导图 一些想法 有关现金流映射技术的推导 第九章:关键利率久期和 VaR 分析 思维导图 一些想法 在解关键方程的时候施加 \(L^1\) 约束也许可以 ...
- Flask - 上下文管理(核心)
参考 http://flask.pocoo.org/docs/1.0/advanced_foreword/#thread-locals-in-flask https://zhuanlan.zhihu. ...
- 使用 JvisualVM 监控 spark executor
使用 JvisualVM,需要先配置 java 的启动参数 jmx 正常情况下,如下配置 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmx ...
- linux磁盘扩容常见问题
1.对于云主机可以对硬盘进行在线扩容,如果不方便重启服务器,可以键入以下命令系统能够马上识别新增空间: echo '1' > /sys/class/scsi_disk/0\:0\:0\:0/de ...
- mybatis 入门参考
参考:https://www.cnblogs.com/xdp-gacl/p/4261895.html
- 白底黑字!Android浅色状态栏黑色字体模式(另)
小彬什么都想做任重致远 关注 2016.06.30 10:16* 字数 489 阅读 3234评论 3喜欢 12 前言 由于该死不死的设计湿,设计了一套白色状态栏的UI.当然在iOS上可以实现自适应, ...
- RabbitMq学习笔记——概念
1.RabbitMQ简介 MQ全称为Message Queue(消息队列),是一种“应用程序”<—>“应用程序”的通信方法.MQ是一个典型的“消费”<—>“生产者”模型的代表, ...