ListView之SimpleAdapter

1、SimpleAdapter是ArrayList和ListView的桥梁,这个ArrayList礼拜的每一项都是一个Map<String,?>类型。ArrayList当中的每一项Map对象都和ListView里边的每一项进行数据绑定一一对应。

2、SimpleAdapter的构造函数:

SimpleAdapter(Context  context, List<? extends Map<String, ?>>  data, int resource, String[]  from, int[] to)
参数:
1,context:上下文。
2,data:基于Map的list。Data里边的每一项都和ListView里边的每一项对应。Data里边的每一项都是一个Map类型,这个Map类里边包含了ListView每一行需要的数据。
3,resource :就是一个布局layout,可引用系统提供的,也可以自定义。
4,from:这是个名字数组,每个名字是为了在ArrayList数组的每一个item索引Map<String,Object>的Object用的。
5,to:里面是一个TextView数组。这些TextView是以id的形式来表示的。例如:Android.R.id.text1,这个text1在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_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="姓名"
            android:textSize="20sp"
            android:textStyle="bold" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="年龄"
            android:textSize="20sp"
            android:textStyle="bold" />
    </LinearLayout>

    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout>

mylist.xml

<?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" >

    <TextView
        android:id="@+id/name"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center" />

    <TextView
        android:id="@+id/age"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center" />

</LinearLayout>

MainActivity.java

package com.example.listviewooo;

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

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

public class MainActivity extends Activity {

    private ListView listView;
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        //构造函数  SimpleAdapter(Context  context, List<? extends Map<String, ?>>  data, int resource, String[]  from, int[] to)
        SimpleAdapter adapter = new SimpleAdapter(this, //构造函数里的Context,上下文
                getData(),//ListView里要显示的数据
                R.layout.mylist, //ListView的布局ID,可以用系统自带的也可以自定义
                new String[]{"name", "age"}, //from  与to一一对应的,在mylist中每显示一个view的key
                new int[]{R.id.name, R.id.age});//to 与from对应,数值应该是自定义ListView里的每个view的Id
        listView = (ListView) findViewById(R.id.listview);
        //都是setAdapter
        listView.setAdapter(adapter);

    }

    public List<Map<String, Object>> getData()

    {
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

        for (int i = 1; i <= 20; i++)
        {
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("name", "张三" + i);
            map.put("age", 20 + i);
            list.add(map);

        }

        return list;
    }

}
时间: 2024-10-23 04:54:34

ListView之SimpleAdapter的相关文章

ListView和SimpleAdapter

在Android中当我们需要在界面上显示列表内容,则要使用ListView控件. 本文主要介绍如何使用ListView控件来显示自己想要的内容. 本文的最终成果如下图所示,当用户点击ListView中的内容时,控制台将会输出相应的Item名字. 在layout当中,我们有两个xml文件,分别为 activity_main 和 simple_item 其中在 前者中创建了一个ListView 控件,在后者中则定义了ListView 中所要显示的列表项,在本项目中为两个TextView. activ

高级控件【安卓5】——滚动视图、列表视图[ListView、SimpleAdapter类]

滚动视图 <ScrollView android: layout_width="fill_parent" android: layout_height="fill_parent"> </ScrollView> 滚动试图指的是提供一个专门的容器,可以装下多于屏幕宽度的组件,而后采用拖拽的方式 显示所有在ScrollView中的组件 注意:滚动视图中只能有一个组件 列表视图[ListView.SimpleAdapter类] 1.ListView控

ListView的SimpleAdapter详解

ListView的两个职责:1.将数据添加到布局中:2.响应用户的选择点击操作 点击任一选项时 响应用户的点击操作改变标题栏显示 源代码ListViewSimpleAdtActivity.java public class ListViewSimpleAdtActivity extends Activity { // private List<String> data = new ArrayList<String>(); @Override public void onCreate

ListView 搭配SimpleAdapter

这是SimplerAdapter的构造函数 public SimpleAdapter(Context context, List<? extends Map<String, ?>> data, @LayoutRes int resource, String[] from, @IdRes int[] to) { mData = data; mResource = mDropDownResource = resource; mFrom = from; mTo = to; mInflat

View(视图)——ListView之 SimpleAdapter

一.概念 列表视图:用来显示多个可滑动项列表的ViewGroup:需要适配器Adapter 将集合中数据和每一个Item所对应的布局动态适配到ListView中进行显示. 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools=

listview使用SimpleAdapter显示图片和文字

package com.example.listview_8; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import a

ListView之SimpleAdapter的使用

SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) 参数context:上下文,比如this.关联SimpleAdapter运行的视图上下文 参数data:Map列表,列表要显示的数据,它是包含Map类型的元素的List集合,并且要求Map的键必须是String 类型的. 参数resource:ListView单项布局文件

android之ListView和SimpleAdapter的组合使用

SimpleAdapter是简单适配器.可以将准备好的数据显示在ListView中.更多信息可以看看Android 官方API开发文档. 示例说明:在SimpleAdapterListViewActivity.java中的内容: package com.zzh.day_listview; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import

ListView的SimpleAdapter

SimpleAdapter adapter = new SimpleAdapter{ this, list, R.id.lv, String[], int[] } Bug处理:当ListView布局中出现按钮时,会出现按钮抢夺了行的点击事情,导致点击行后无响应.这时需要设置descendantFocusability=“blockDescendants",使行能够获得焦点 原文地址:https://www.cnblogs.com/xxie12/p/11484268.html