Android UI学习之ListView(使用ArrayAdapter和SimpleAdapter)

既然要使用ArrayAdapter,那我们先看看系统中所以的Adapter关系:

在实际中使用频率比较高的有:SimpleAdapter, ArrayAdapter, BaseAdapter

BaseAdapter: 是一个抽象类,实现它要实现比较多的方法,但是灵活的高

ArrayAdapter:支持了泛型操作,比较简单,一般只能显示同类型的数据

SimpleAdapter:有比较好的灵活的,可以定义自己的UI

关于BaseAdapter在上一节已经讲过,这里不在举例说明

我们先使用ArrayAdapter:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ListView listView = (ListView) findViewById(R.id.lv);

       listView.setAdapter(new ArrayAdapter<String>(
        		MainActivity.this,
        		R.layout.item_list, //每个元素的布局文件
        		R.id.tv_name,  //要给布局文件中那个控件设置属性
        		new String[]{"视频", "电影", "无线"}));//给id=tv_name设置属性

    }

效果图如下:

可以看到,ArrayAdapter只能设置id相同的属性,别的id的属性是设置不了的。

所以,ArrayAdapter一般用于设置只需要设置一种类型的数据,既方便又简单。

SimpleAdapter学习:

先贴出我们上面的布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/image_head"
        android:layout_width="50sp"
        android:layout_height="50sp"
        android:src="@drawable/afh"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >
    <TextView
        android:id="@+id/tv_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="23sp"
        />
     <TextView
        android:id="@+id/tv_phone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="15sp"
        android:text="10086"
        />
    </LinearLayout>

</LinearLayout>

使用SimpleAdapter显示:

 //定义一个list
    List<Map<String, Object>> data = new ArrayList<Map<String,Object>>();

    //第一个行数据设置
    Map<String, Object> map1 = new HashMap<String, Object>();
    map1.put("image", R.drawable.afh);
    map1.put("name", "定位");
    map1.put("phone", "12345678900000000000");
    data.add(map1);

    Map<String, Object> map2 = new HashMap<String, Object>();
    map2.put("image", R.drawable.afj);
    map2.put("name", "音乐");
    map2.put("phone", "99999999999999999999");
    data.add(map2);

    Map<String, Object> map3 = new HashMap<String, Object>();
    map3.put("image", R.drawable.afl);
    map3.put("name", "图片");
    map3.put("phone", "66666666666666666666");
    data.add(map3);

    Map<String, Object> map4 = new HashMap<String, Object>();
    map4.put("image", R.drawable.afn);
    map4.put("name", "链接");
    map4.put("phone", "88888888888888888888");
    data.add(map4);

    listView.setAdapter(new SimpleAdapter(this, data, R.layout.item_list, //每行的布局文件样式
    		new String[]{"image", "name" ,"phone"}, //这里image和资源id的是一一对应的,顺序是对应的
    		new int[]{R.id.image_head, R.id.tv_name, R.id.tv_phone}));

显示效果如下:

可以看到SimpleAdapter作用还是很明显的,同时可以设置image, 和2个textview

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-04 06:17:24

Android UI学习之ListView(使用ArrayAdapter和SimpleAdapter)的相关文章

Android UI学习之ListView

ListView是手机系统中使用非常广泛的一种组件,它以垂直列表的形式显示所以列表项. 今天我们学习如何将系统的短信显示到listView上. 关于如何获取系统的短信请看: Android 四大组件学习之ContentProvider三 先看一下我们的布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.andr

Android UI学习 - ListView (android.R.layout.simple_list_item_1是个什么东西)

Android UI学习 - ListView 2010-06-20 18:21:35 标签:Android UI 移动开发 ListView ListActivity 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://android.blog.51cto.com/268543/336162 ListActivity ListActivity是一个专门显示ListView的Activity类,它内置了ListView对象,只要我

Android -- ListView与ArrayAdapter、SimpleAdapter

对于ArrayAdapter,里面虽然能添加图片,但只能是相同的图片. 废话不多说: 布局&&list的item布局                                                                 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.andro

Android UI组件----自定义ListView实现动态刷新

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3910541.html 联系方式:[email protected] [正文] 一.具体步骤: (1)在activiy_main.xml中加一个ListView控件:再添加一个item的模板activity_main_item.xml,加一个底部加载的视图activity_main_load.xml

Android UI开发: 横向ListView(HorizontalListView)及一个简单相册的完整实现 (附源码下载)

Android UI开发: 横向ListView(HorizontalListView)及一个简单相册的完整实现 (附源码下载) POSTED ON 2014年6月27日 BY 天边的星星 本文内容: 1.横向ListView的所有实现思路; 2.其中一个最通用的思路HorizontalListView,并基于横向ListView开发一个简单的相册: 3.实现的横向ListView在点击.浏览时item背景会变色,并解决了listview里setSelected造成item的选择状态混乱的问题.

Android train——ListView绑定ArrayAdapter、SimpleAdapter、SimpleCursorAdapter、BaseAdapter

ListView绑定ArrayAdapter res/layout/activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout

深入理解使用ListView时ArrayAdapter、SimpleAdapter、BaseAdapter的原理

在使用ListView的时候,我们传给setAdapter方法的Adapter通常是ArrayAdapter.SimpleAdapter.BaseAdapter,但是这几个Adapter内部究竟是什么样子如果我们不搞清楚的话,在使用的时候就会感觉有些混乱,概括的说这三个Adapter之间的差异主要是由他们各自的getView方法的差异造成的,接下来我们一起看一下这几个Adapter的getView的源码 1.ArrayAdapter的getView方法源码如下: public View getV

Android开发学习记录--ListView使用

1.ListView的简单使用 首先建立一个新的项目,在xml文件中添加ListView控件,如下所示: <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent"></ListView>接下来修改MainActivity中的代码: public class Ma

android UI——分组+悬停 listview

能够使头部悬停的listview在项目中是经常用到的,例如qq的好友列表或者地区选择. 先不多说,看效果图:(懒得上gif图了) 这里借鉴了别人的核心代码,我做了一些分析. 主要是使用PinnedSectionListView来替换listview. 这里的PinnedSectionListView是别人的.我们主要看如何使用这个PinnedSectionListView以及如何适配数据进去. 博文的最后我会上传demo,里面有PinnedSectionListView和完整项目.可以根据这篇博