今天认真看了下android适配器,学习了下它的使用方法。

  一,ArrayAdapter

  ArrayAdapter 比较简单,只可以存放一行文本信息。下面是简单的实现

    private ListView listView;
private ArrayAdapter<String> adapter;
private ArrayList<String> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_array_adapter);
listView = (ListView)findViewById(R.id.listView3);
list = new ArrayList<String>();
adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,getData());
listView.setAdapter(adapter);
}
ArrayList<String> getData(){
list.add("第一行");
list.add("第二行");
list.add("第三行");
list.add("第四行");
return list;
}

  1,首先需要定义一个数组的集合,这里用ArrayList<String>类型,通过getData()动态的添加数据,

  2,定义一个ArrayAdapter,参数context   :只需要填入上下文this,第二个参数 resource:是一个布局文件,第三个参数List<T> objects:是一个数据集合。上面代码中的

android.R.layout.simple_list_item_1参数是一个系统自带的laout文件,通过按键ctrl+B查看源代码如下:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:gravity="center_vertical"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
/>

  只是一个简单的TextView,垂直居中,当然如果不用系统自带的,用我们自己创建的也可以。

  3,将适配器和控件进行绑定。如果没有这一步,相当于我们创建的控件是不会显示出任何数据的。

二 SimpleAdapter

  SimpleAdapter 比ArrayAdapter稍微复杂一些,一般用在图片文字混排的数据结构中一个简单例子

 private SimpleAdapter adapter;
private ListView listView;
private List<Map<String,Object>> list; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_simple_adapter);
listView = (ListView)findViewById(R.id.listView2);
list = new ArrayList<Map<String, Object>>();
adapter = new SimpleAdapter(this,getData(),R.layout.itemlayout,new String[]{"pic","title","content"},new int[]{R.id.imageView,R.id.textView,R.id.textView2});
listView.setAdapter(adapter);
}
List<Map<String,Object>> getData(){
Map<String,Object> map = new HashMap<String, Object>();
map.put("pic",R.drawable.a);
map.put("title","标题");
map.put("content","内容");
list.add(map);
map = new HashMap<String, Object>();
map.put("pic",R.drawable.b);
map.put("title","标题");
map.put("content","内容");
list.add(map);
map = new HashMap<String, Object>();
map.put("pic",R.drawable.c);
map.put("title","标题");
map.put("content","内容");
list.add(map);
map = new HashMap<String, Object>();
map.put("pic",R.drawable.d);
map.put("title","标题");
map.put("content","内容");
list.add(map);
return list;
}

通过ctrl+B 查看SimpleAdapter 定义,其中参数

List<? extends Map<String, ?>> data是一个List的集合,成员是一个Map,
resource 同样是一个布局文件,只是这里的布局文件需要我们手动添加,
from     map中映射到控件ID的字符串  
to       就是我们定义的控件ID    
 public SimpleAdapter(Context context, List<? extends Map<String, ?>> data,
int resource, String[] from, int[] to) {

这里的子布局文件使用自定义itemlayout

<?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">
<ImageView
android:layout_width="50dp"
android:layout_height="60dp"
android:id="@+id/imageView" />
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView2" />
</LinearLayout>
</LinearLayout>

最后一点就是千万不能忘记setAdapter

android 适配器 ArrayAdapter,SimpleAdapter的学习的更多相关文章

  1. Android学习之适配器ArrayAdapter SimpleAdapter

    Adapter是个什么角色呢?其实它的作用就是View界面和数据之间的桥梁.我们可以看作是界面数据绑定的一种理解,它所操纵的数据一般都是一些比较复杂的数据,如数组,链表,数据库,集合等. 常用的适配器 ...

  2. 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)

    1.listview入门,自定义的数据适配器 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/and ...

  3. 13.Android-ListView使用、BaseAdapter/ArrayAdapter/SimpleAdapter适配器使用

    1.ListView ListView 是 Android 系统为我们提供的一种列表显示的一种控件,使用它可以用来显示我们常见的列表形式.继承自抽象类 AdapterView.继承图如下所示: 以微信 ...

  4. Android 常用数据适配器ArrayAdapter

    接着上篇文章<Android 采用Layout Inflater创建一个View对象>,本文采用常用数据适配器ArrayAdapter 新建项目后,在layout文件夹下新建list_it ...

  5. android 71 ArrayAdapter和SimpleAdapter

    Activity和item: Activity:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/an ...

  6. android 适配器simpleadapter和baseadapter区别

    android 适配器 simpleadapter 和 baseadapter 设计网络程序或者数据处理显示程序的时候,常常会使用 simpleadapter 和baseadapter 来实现. ad ...

  7. android适配器及监听点击和滚动在ListView中的使用

    package com.example.demon08; import java.util.ArrayList;import java.util.HashMap;import java.util.Li ...

  8. Android ListView ArrayAdapter 的简单使用

    前面写了3篇关于android的文章,其中的演示程序都写在了一个工程中,当时为了方便测试就在启动页MainActivity中放了3个按钮,点击不同的按钮进入不同的示例程序页面,MainActivity ...

  9. android之ArrayAdapter的重写

    昨天介绍了ArrayAdapter的使用,今天介绍一下更加实用的一点,对它进行重写,满足自己的个性化设计需要. ArrayAdapter(数组适配器)一般用于显示一行文本信息,所以比较容易. publ ...

随机推荐

  1. 【转】Header Only Library的介绍

    什么是Header Only Library Header Only Library把一个库的内容完全写在头文件中,不带任何cpp文件. 这是一个巧合,决不是C++的原始设计. 第一次这么做估计是ST ...

  2. biz-NewsService

    package com.pb.news.service; import java.util.List; import com.pb.news.entity.News; public interface ...

  3. JavaScript第三课 (循环)

    循环语句       !如果至少需要执行一次循环体,就用do … while语句,一般情况下用while语句就可以了. while 语法:一直读取循环到条件为假时停止循环. while(条件) { 语 ...

  4. 多线程下System.Security.Cryptography.Aes CreateDecryptor报“Safe handle has been closed”的解决方案

    因为系统需要对一些核心数据进行预加载以保证查询速度. 所以在application_start 事件中启用了后台线程对相关的数据进行加载并解密(为了保证解密的效率,将AES对像做了静态对像来保存:pr ...

  5. raft如何实现Linearizable Read

    Linearizable Read通俗来讲,就是读请求需要读到最新的已经commit的数据,不会读到老数据. 对于使用raft协议来保证多副本强一致的系统中,读写请求都可以通过走一次raft协议来满足 ...

  6. mysql获得自增的下条id的值

    需求: 当数据表中存在一个字段需要该条数据中自增长的id值 实现方法:(1)代码中先插入该条数据后,再次修改数据 (2)在数据库中使用触发器完成 具体实现:实现方法中的第一种方法就不在此实现,以下便是 ...

  7. 50行代码实现的高性能动画定时器 raf-interval

    写在前面 raf-interval 是基于 window.requestAnimationFrame() 封装的定时器. Github: https://github.com/dntzhang/raf ...

  8. 读Zepto源码之Callbacks模块

    Callbacks 模块并不是必备的模块,其作用是管理回调函数,为 Defferred 模块提供支持,Defferred 模块又为 Ajax 模块的 promise 风格提供支持,接下来很快就会分析到 ...

  9. [补] winpcap编程——EAPSOCKET实现校园网锐捷登录(mentohust)

    EAP SOCKET Implement Mentohust 时间20161115 对于EAP协议不了解,可参考上一篇随笔. 通过抓包分析校园网的锐捷登录流程,我在上一篇随笔中实现了EAPSOCKET ...

  10. maven创建web工程Spring配置文件找不到问题解决方案

    使用maven创建web工程,将Spring配置文件applicationContext.xml放在src/resource下,用eclipse编译时提示class path resource [ap ...