android中SimpleAdapter

代码:

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

import java.util.*;

public class MainActivity extends Activity {    private String[] names=new String[]{        "虎头","弄玉","李清照","李白"};    private String[] descs=new String[]{            "可爱的小孩","一个擅长音乐的女孩","一个擅长文学的女性","浪漫主义诗人"    };    private int[] imageIds=new int[]{            R.drawable.tiger,R.drawable.nongyu,R.drawable.qingzhao,R.drawable.libai    };    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        List<Map<String,Object>> listItems=new ArrayList<Map<String,Object>>();        /**         *  创建一个List集合,List集合中的元素是Map.List可以理解为链表,这个链表中的元素是Map类,Map是由String到Object的映射。         *  arraylist是list的一种,它继承于list,有所有list的特性,并且它不再是一个抽象类,它的存储方式是连续存储,这就是他的一个实现方法。         *  还有一种linkedlist也是list的一种,它也继承于list,它的存储方式不是连续存储,而是通过第i个找到第i+1个(如果有的话)。         *  当只是需要用到list的特性的时候,并不用关注它是arraylist还是linkedlist。         *  所以定义的时候是用list而new实体的时候用的arraylist,这样是允许的。         *  只是这样做的后果是listItems明明是ArrayList但是却不能使用ArrayList有而list没有的特点。         *  HashMap是Map的一种,他有一个算法使它能快速的通过key找到value。         *  可以简单的认为list是通过下标找对象而Map是通过key找对象,         */        for(int i=0;i<names.length;i++){            Map<String,Object> listItem=new HashMap<String,Object>();            listItem.put("header",imageIds[i]);            listItem.put("personName",names[i]);            listItem.put("desc",descs[i]);            listItems.add(listItem);        }        SimpleAdapter simpleAdapter=new SimpleAdapter(this,listItems,R.layout.simple_item,                new String[]{"personName","header","desc"},                new int[]{R.id.name,R.id.header,R.id.desc});        /**         * 创建了一个SimpleAdapter,需要五个参数:         * 第二个参数:应该是一个List<? extends Map<String,?>>类型的集合对象,该集合中的每个Map<String,?>对象生成一个列表项         * 第三个参数:指定一个界面布局的ID,意味着使用该文件作为列表项组件         * 第四个参数:该参数应该是一个String[]类型的参数,决定提取Map<String,?>对象中哪些key对应的value来生成列表项         * 第五个参数:该参数应该是一个int[]类型的参数,该参数决定填充哪些组件         */        ListView list=(ListView)findViewById(R.id.mylist);        list.setAdapter(simpleAdapter);
       /**         * 为单击事件添加监听器         */        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {            //第position项被单击时激发该方法            @Override            /**             * parent相当于listView list适配器的一个指针,可以通过它获得list里面装着的一切东西             * view是点击某一项获得点击那一项控件id后操作控件             * position是点击的项在list适配器中的位置(生成listView时,适配器一个一个的做item,然后把他们按顺序排好队,在放到listView里,意思就是这个项是第position号做好的)             * id是点击的项在listView里面第几行的位置,大部分时候position和id的值是一样的             */            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                System.out.println(names[position] + "被单击了");            }        });        /**         * 为选中事件添加监听器         */        list.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {            //第position项被选中时激发该方法            @Override            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {                System.out.println(names[position] + "被选中了");            }

            @Override            public void onNothingSelected(AdapterView<?> parent) {

            }        });    }}
时间: 2024-10-01 04:56:17

android中SimpleAdapter的相关文章

Android(java)学习笔记137:Android中SimpleAdapter,ArrayAdapter和BaseAdapter详解

1.SimpleAdapter(很多时候需要继承它,来自定义adapter): simpleAdapter的扩展性最好,可以定义各种各样的布局出来,可以放上ImageView(图片)等.可以显示比较复杂的列表,包括每行显示图片.文字等,但不能对列表进行后期加工(在java代码中加工),也是只是单纯的负责显示 public class ImageListView extends ListActivity { @Override public void onCreate(Bundle savedIn

Android中的ListView使用案例(SimpleAdapter实现)

ListView是可以垂直的滚动的显示一组列表的内容,其中的每一个条目可以是一个单独的组件,也可以是由多个组件组成的组合控件. 实现一个ListView控件的步奏: 1.准备ListView所要显示的数据,一般为一维或二维动态数组. 2.构建适配器,由于ListView中的每一个条目可以很简单,也可以很复杂,根据需要可以选择ArrayAdapter.SimpleAdapter.或者BaseAdapter. 3.使用setAdapter为一个ListView控件设置适配器. 4.为ListView

Android技术18:Android中Adapter类详解

1.Adapter设计模式 Android中adapter接口有很多种实现,例如,ArrayAdapter,BaseAdapter,CursorAdapter,SimpleAdapter,SimpleCursorAdapter等,他们分别对应不同的数据源.例如,ArrayAdater对应List和数组数据源,而CursorAdapter对应Cursor对象(一般从数据库中获取的记录集).这些Adapter都需要getView方法返回当前列表项显示的View对象.当Model发生改变时,会调用Ba

学习Android之SimpleAdapter显示网络图片

效果图: 此程序主要的知识点是:SimpleAdapter本身是不支持网络图片的, 如果在Map.put(a,b)中 b为一个Bitmap,程序不会报红色字体,而是在控制台输出绿色的字体,如下 05-10 15:46:45.474: I/System.out(846): resolveUri failed on bad bitmap uri: [email protected] 要想实现显示网络图片其实很简单,使用SimpleAdapter中的方法simpleAdapter.setViewBin

Android 中常见控件的介绍和使用

1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.lang.Object   ? android.view.View   ? android.widget.TextView 直接子类: Button, CheckedTextView, Chronometer, DigitalClock, EditText 间接子类: AutoCompleteTextV

Android中Adapter之BaseAdapter使用

Android界面中有时候需要显示稍微复杂的界面时,就需要我们自定义一个adapter,而此adapter就要继承BaseAdapter,重新其中的方法. Android中Adapter类其实就是把数据源绑定到指定的View上,然后再返回该View,而返回来的这个View就是ListView中的某一 行item.这里返回来的View正是由我们的Adapter中的getView方法返回的.这样就会容易理解数据是怎样一条一条显示在ListView 中的. 在完成这篇文章中的例子之后,我思考了很长时间

Android中设置ListView内容刷新问题

最近在学习Android的listView控件时遇到了一个问题,如何添加一个Item到ListView中并及时的刷新出来.在网上查了很多帖子,很多人在问,也很多人在解答,但是总的来说都没找到详细的解决方案.对于ListView与数据库的同步,高手们建议使用ContentProvider对象.但是如果我不使用数据库呢?也有人回答用notifyDataSetChanged()方法.这倒是一个正确的解决方案,但是对于新手来说,还是比较困惑怎么去用,这里我贴一下我的用法: 代码 OnClickListe

Android中SQLite应用详解

参考文章:http://blog.csdn.net/liuhe688/article/details/6715983 本文只是记录一下sqlite应用的过程. ? ? 程序结构如下: 其中,DBManger继承DBHelper, Person是一个实体类,MyActivity是一个主界面,main.xml里面定义了一个listview. 编写DBHelper package com.example.myapp; ? import android.content.Context; import a

android 适配器simpleadapter和baseadapter区别

android 适配器 simpleadapter 和 baseadapter 设计网络程序或者数据处理显示程序的时候,常常会使用 simpleadapter 和baseadapter 来实现. adapter 是适配器模式,是数据和界面之间的桥梁.baseadapter 是一个抽象的类,要使用必需为其定义子类并实现相关方法.simpleadapter 派生于 baseadapter ,已经实现了相关的方法,所以可以直接使用.二者在使用效果上没有太大的区别,两者可以设计出几乎一模一样的界面.但在