各种Adapter的用法

同样是一个ListView,可以用不同的Adapter让它显示出来,比如说最常用的ArrayAdapter,SimpleAdapter,SimpleCursorAdapter,以及重写BaseAdapter等方法。

  ArrayAdapter比较简单,但它只能用于显示文字。而SimpleAdapter则有很强的扩展性,可以自定义出各种效 果,SimpleCursorAdapter则可以从数据库中读取数据显示在列表上,通过从写BaseAdapter可以在列表上加处理的事件等。

  ArrayAdapter:

 1 package com.shang.test;
 2
 3  import java.util.ArrayList;
 4
 5  import android.app.Activity;
 6  import android.os.Bundle;
 7  import android.widget.ArrayAdapter;
 8  import android.widget.ListView;
 9
10  /**
11  *
12  * @author shangzhenxiang
13  *
14  */
15  public class TestArrayAdapterActivity extends Activity{
16
17     private ListView mListView;
18     private ArrayList<String> mArrayList = new ArrayList<String>();
19
20     @Override
21     protected void onCreate(Bundle savedInstanceState) {
22         super.onCreate(savedInstanceState);
23         setContentView(R.layout.testarrayadapter);
24         mListView = (ListView) findViewById(R.id.myArrayList);
25         mListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, getData()));
26     }
27
28     private ArrayList<String> getData() {
29         mArrayList.add("测试数据1");
30         mArrayList.add("测试数据2");
31         mArrayList.add("测试数据3");
32         mArrayList.add("测试数据4");
33         mArrayList.add("测试数据5");
34         mArrayList.add("测试数据6");
35         return mArrayList;
36     }
37 }

View Cod

布局里面有个ListView就可以了:

<?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="fill_parent">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello"/>
    <ListView
        android:id="@+id/myArrayList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
 </LinearLayout>

上面的代码中用到了ArrayAdapter的构造方法:

public ArrayAdapter (Context context, int textViewResourceId, T[] objects)

Api中是这么描述的:

其中Context为当前的环境变量,可以显示一行文字的一个布局文件,和一个List的集合,也就是数据源。

布局文件可以自己写,也可以用系统的,我这里是用的系统的。自己写的布局中包含一个TextView就可以了,当然系统中也有包含一个TextView的布局文件:就是 android.R.layout.simple_expandable_list_item_1,调用这个比较方便。

这里给出运行后的效果图:

  



SimpleAdapter:

package com.shang.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;

/**
 *
 * @author shangzhenxiang
 *
 */
public class TestSimpleAdapter extends Activity {

    private ListView mListView;
    private SimpleAdapter mAdapter;
    private List<HashMap<String, Object>> mHashMaps;
    private HashMap<String, Object> map;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.testsimpleadapter);
        mListView = (ListView) findViewById(R.id.mySimpleList);
        mAdapter = new SimpleAdapter(this, getData(), R.layout.simpleitem, new String[]{"image", "title", "info"}, new int[]{R.id.img, R.id.title, R.id.info});
        mListView.setAdapter(mAdapter);
    }

    private List<HashMap<String, Object>> getData() {
        mHashMaps = new ArrayList<HashMap<String,Object>>();
        map = new HashMap<String, Object>();
        map.put("image", R.drawable.gallery_photo_1);
        map.put("title", "G1");
        map.put("info", "google 1");
        mHashMaps.add(map);

        map = new HashMap<String, Object>();
        map.put("image", R.drawable.gallery_photo_2);
        map.put("title", "G2");
        map.put("info", "google 2");
        mHashMaps.add(map);

        map = new HashMap<String, Object>();
        map.put("image", R.drawable.gallery_photo_3);
        map.put("title", "G3");
        map.put("info", "google 3");

        mHashMaps.add(map);
        return mHashMaps;
    }
}

<?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"
  android:orientation="horizontal">
    <ImageView
        android:layout_width="wrap_content"
        android:id="@+id/img"
        android:layout_margin="5px"
        android:layout_height="wrap_content">
        </ImageView>
    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#ffffff"
            android:textSize="22px"></TextView>
        <TextView
            android:id="@+id/info"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#ffffff"
            android:textSize="13px"></TextView>
    </LinearLayout>
</LinearLayout>

simpleAdapter的:

第一个参数和第三个参数跟ArrayAdapter中的是一样的,第二个参数就是由HashMap组成的List,也就是数据源,而第5个参数也就是map中的key,最后一个参数就是map中key对应的值要显示在布局中的位置的id。

看下效果:

时间: 2024-10-11 00:30:00

各种Adapter的用法的相关文章

转:各种Adapter的用法

各种Adapter的用法 同样是一个ListView,可以用不同的Adapter让它显示出来,比如说最常用的ArrayAdapter,SimpleAdapter,SimpleCursorAdapter,以及重写BaseAdapter等方法. ArrayAdapter比较简单,但它只能用于显示文字.而SimpleAdapter则有很强的扩展性,可以自定义出各种效果,SimpleCursorAdapter则可以从数据库中读取数据显示在列表上,通过从写BaseAdapter可以在列表上加处理的事件等.

Android中各种Adapter的用法

1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(ListView,GridView)等地方都需要用到Adapter.如下图直观的表达了Data.Adapter.View三者的关系: Android中所有的Adapter一览: 由图可以看到在Android中与Adapter有关的所有接口.类的完整层级图.在我们使用过程中可以根据自己的需求实现接口或者继承类进行一定的扩展.比较常用的有 BaseAdapter,SimpleA

Android各种Adapter的用法

同样是一个ListView,可以用不同的 Adapter让它显示出来,比如说最常用的ArrayAdapter,SimpleAdapter,SimpleCursorAdapter,以及重写BaseAdapter等方法. ArrayAdapter比较简单,但它只能用于显示文字.而SimpleAdapter则有很强的扩展性,可以自定义出各种效果,SimpleCursorAdapter则可以从数据库中读取数据显示在列表上,通过从写BaseAdapter可以在列表上加处理的事件等. 下面先来看看Array

Adapter杂谈,想到什么说什么(以后会有个正式版本)

本来今天是想着回顾一下以前的知识(把以前看过的简单东西做一做),然后兴致勃勃准备总结Adapter的用法,可是遇到第一个也是最简单的一个ArrayAdapter就已经撞到头破血流... 这篇也许对于像我一样的菜鸟比较适合吧.老司机可以略过!(眼高手低者可以看看,没准就有用了呢) 1.成员变量中直接  ListView lv_array=(ListView) findViewById(R.id.lv_array)看清楚是在成员变量中,这个错误我调了俩小时,过程就不说了...比较DT,后来仔细想了想

android ListView与Adapter详解

ListView可以说是android开发中非常非常常用的一个控件,今天整理了一下,ListView相关的东西,记录于此.(很奇怪,总感觉只有自己总结写过的东西才是属于自己的,看别人看多了,却总是心中不慎踏实) ListView在使用中有两个作用: 一是将数据绑定到ListView的item:而是ListView的item对用户点击时间作出响应,常用的有onClickListener与onLongClickListener,当然当你需要计算用户点击的具体位置再做出响应时,可以先实现onTouch

OSChina 技术周刊第二十期 —— 使用 Docker 搭建 Java Web 运行环境

每周技术抢先看,总有你想要的! 移动开发 [软件]移动端web框架 Frozen UI [博客]Android各种Adapter的用法 服务端开发/管理 [翻译]2014 Docker 的竞争随即而来 [翻译]Docker 和 PID 1 僵尸进程问题 [软件]Node.js 串口读写包 node-serialport [软件]Nginx 模块 Nginx-Clojure [博客][Web安全之实战] 跨站脚本攻击XSS [博客]Tiny框架应用实践之Tiny社区 [博客]Laravel大型项目

关于RecyclerView你知道的不知道的都在这了(下)

目录 目录 正文 6. Recycler 7. ItemAnimator 8. ItemDecoration 9. OnFlingListener 目录 由于本篇篇幅特长,特意做了个目录,让大伙对本篇内容先有个大概的了解. 另外,由于有些平台可能不支持 `` 解析,所以建议大伙可借助本篇目录,或平台的目录索引进行快速查阅. LayoutManager 1.1 LinearLayoutManager 基本效果介绍 findFirstCompletelyVisibleItemPosition() f

Android之Adapter用法总结

http://blog.csdn.net/fznpcy/article/details/8658155 Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid View)等地方都需要用到Adapter.如下图直观的表达了Data.Adapter.View三者的关系: Android中所有的Adapter一览: 由图可以看到在Android中与Adapter有关

Android之Adapter用法总结(转)

Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid View)等地方都需要用到Adapter.如下图直观的表达了Data.Adapter.View三者的关系: Android中所有的Adapter一览: 由图可以看到在Android中与Adapter有关的所有接口.类的完整层级图.在我们使用过程中可以根据自己的需求实现接口或者继承类进行一定的扩展.比较常用