ArrayAdapter与SimpleAdapter的使用
在使用ListView中我们使用到adapter,android中为我们不仅提供了BaseAdapter类来让我们自定义自己的Adapter,还为我们提供了ArrayAdapter以及SimpleAdapter。现在让我们简述一下,这两个类的使用方法。
package xidian.dy.com.chujia; import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ArrayAdapter;
import android.widget.ListView; public class MainActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv = (ListView) findViewById(R.id.lv);
String[] str = new String[]{"fdfas", "fdsf", "fafda"};
if(lv != null)
lv.setAdapter(new ArrayAdapter<String>(this, R.layout.item_list, R.id.dog, str));
}
}
ArrayAdapter第一个参数是上下文,一般都是this来指定当前的activity,第二个参数是子布局文件,将来要放到ListView中,第三个是子布局文件中需要填充的对象ID,第四个是填充的值,类型为数组。先看一下子布局文件。
- item_list.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
tools:context="xidian.dy.com.chujia.MainActivity"> <ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/dog"
/>
<TextView
android:id="@+id/dog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="小狗"
android:textSize="30sp"
android:layout_gravity="center_vertical"
/>
</LinearLayout>
R.id.dog就是子布局文件中的TextView的id,ArrayAdapter没生成一个子布局对象后,会从str中取一个值出来,将其填充到TextView中。然后将生成的View对象交给ListView来显示。ArrayAdapter只能处理一种数据类型,这里的泛型指定的是String类,所以其第四个参数只能传入String数组。
SimpleAdapter
SimpleAdaptern能够处理多种数据,其用法和ArrayAdapter很相似。
package xidian.dy.com.chujia; import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
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 { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv = (ListView) findViewById(R.id.lv);
List<Map<String, Object>> data = new ArrayList<>();
Map<String, Object> m1 = new HashMap<>();
m1.put("phone", R.drawable.dog);
m1.put("name", "one");
data.add(m1); Map<String, Object> m2 = new HashMap<>();
m2.put("phone", R.drawable.dog1);
m2.put("name", "two");
data.add(m2); Map<String, Object> m3 = new HashMap<>();
m3.put("phone", R.drawable.dog2);
m3.put("name", "three");
data.add(m3);
if(lv != null)
lv.setAdapter(new SimpleAdapter(this, data, R.layout.item_list, new String[]{"phone", "name"}, new int[]{R.id.phone, R.id.name}));
}
}
布局文件中有一个ImageView和一个TextView,我们一张图和一个字符串放到一个Map中,然后将多个Map放到一个List中。将List传递给SimpleAdapter。第三个参数和第四个参数的含义是,从Map中取出phone放到布局中的R.id.phone中,将name放到R.id.name中。
ArrayAdapter与SimpleAdapter的使用的更多相关文章
- 深入理解使用ListView时ArrayAdapter、SimpleAdapter、BaseAdapter的原理
在使用ListView的时候,我们传给setAdapter方法的Adapter通常是ArrayAdapter.SimpleAdapter.BaseAdapter,但是这几个Adapter内部究竟是什么 ...
- Android适配器之ArrayAdapter、SimpleAdapter和BaseAdapter的简单用法与有用代码片段(转)
摘自:http://blog.csdn.net/shakespeare001/article/details/7926783 Adapter是连接后端数据和前端显示的适配器接口,是数据Data和UI( ...
- ArrayAdapter、SimpleAdapter简单用法
1. 使用流程 2. ArrayAdapter new ArrayAdapter<?>(context, textViewResourceId, objects) context:上下 ...
- [转]Android适配器之ArrayAdapter、SimpleAdapter和BaseAdapter的简单用法与有用代码片段
收藏ArrayAdapter.SimpleAdapter和BaseAdapter的一些简短代码片段,希望用时方便想起其用法. 1.ArrayAdapter 只可以简单的显示一行文本 代码片段: A ...
- 使用具体解释及源代码解析Android中的Adapter、BaseAdapter、ArrayAdapter、SimpleAdapter和SimpleCursorAdapter
Adapter相当于一个数据源,能够给AdapterView提供数据.并依据数据创建相应的UI.能够通过调用AdapterView的setAdapter方法使得AdapterView将Adapter作 ...
- 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)
1.listview入门,自定义的数据适配器 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/and ...
- android 71 ArrayAdapter和SimpleAdapter
Activity和item: Activity:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/an ...
- android 适配器 ArrayAdapter,SimpleAdapter的学习
今天认真看了下android适配器,学习了下它的使用方法. 一,ArrayAdapter ArrayAdapter 比较简单,只可以存放一行文本信息.下面是简单的实现 private ListView ...
- Android -- ListView与ArrayAdapter、SimpleAdapter
对于ArrayAdapter,里面虽然能添加图片,但只能是相同的图片. 废话不多说: 布局&&list的item布局 ...
随机推荐
- ElasticSearch Filter Aggregations
类似于sql语句中where子句的作用 { "query": { "match_all": {} }, "aggs": { "ag ...
- 对象复制问题 && lvalue-rvalue && 引用
按值传递实参到函数和函数返回临时变量的副本,函数的效率对执行性能来说至关重要 如果避免这样的复制操作,则执行时间可能会大大缩短. class CMessage { private: char * m_ ...
- [转载]UEditor报错TypeError: me.body is undefined
本文转载来自:UEditor报错TypeError: me.body is undefined 今天在使用UEditor的setContent的时候报错,报错代码如下 TypeError: me.bo ...
- selenium处理滚动条
1.用js实现 滚动到底部 String js="document.documentElement.scrollTop=10000"滚动到顶部 String js="do ...
- 【C#】1.算法温故而知新 - 简单的桶排序
该算法的时间复杂度是O(M+N),M为桶的个数,N为待排序的个数 缺点: 1.不适用于小数 2.当数值过多,太浪费空间,比如数值范围为0~99999,那需申请100000个变量,也就是要写成a[100 ...
- 孙鑫视频学习:VS2010中找不到【Tab order】菜单项
在学习孙鑫视频中,修改Tab顺序时,找不到VC6.0中提到的[Layout]->[Tab order]菜单项,但VC2010中可以用Ctrl+D调出来Tab顺序,或者[格式]->[Tab键 ...
- 原创翻译-测试驱动开发(TDD)
测试驱动开发原则 翻译自<<Expert Python Programming>> 测试驱动开发是指首先编写包含所有测试软件特点的测试集,然后再去开发软件.也就是说,在编写软件 ...
- android源码在线查看
http://grepcode.com/project/repository.grepcode.com/java/ext/com.google.android/android/
- 使用JspStudy集成环境快速部署jsp项目
1. 安装jdk 本人网盘资源:https://yunpan.cn/ckZLNbqxkDYYe (提取码:b5e8) 去jdk官网下载最新的jdk: http://www.oracle.com/tec ...
- 大话redis/memcache缓存
通常情况下,随着业务量增加,对后端数据库的访问压力也会随之加大.当数据库访问压力渐渐增大时,除了升级数据库配置提高数据库本身的抗压能力外,我们也可以采用在应用服务器与数据库服务器之间架设数据库缓存服务 ...