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单项布局文件的Id,这个布局就是你自定义的布局了,你想显示什么样子的布局都在这个布局中。这个布局中必须包括了to中定义的控件id

参数 from:一个被添加到Map上关联每一个项目列名称的列表,数组里面是列名称。

参数 to:是一个int数组,数组里面的id是自定义布局中各个控件的id,需要与上面的from一一对应。

下面举个例子说明:

自定义布局显示本地资源;列表项的单项显示格式,定义main.xml文件,如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="3px"
        />
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >
        <TextView
            android:id="@+id/title"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textSize="16sp"
            />
        <TextView
            android:id="@+id/info"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textSize="10sp"
            />
    </LinearLayout>

</LinearLayout>

如果直接继承ListAcitivty,则不需要自定义ListView
public class DemoActivity extends ListActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SimpleAdapter adapter = new SimpleAdapter(this, getData(),
                R.layout.main, new String[] { "img", "title", "info" },
                new int[] { R.id.img, R.id.title, R.id.info });
        setListAdapter(adapter);
    }
 private List<Map<String, Object>> getData() {
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("img", R.drawable.ic_icon1);
        map.put("title", "zhangsan");
        map.put("info", "asd");
        list.add(map);

        map = new HashMap<String, Object>();
        map.put("img", R.drawable.ic_icon2);
        map.put("title", "wangwu");
        map.put("info", "sadf");
        list.add(map);

        map = new HashMap<String, Object>();
        map.put("img", R.drawable.e04b);
        map.put("title", "zhaoliu");
        map.put("info", "fegg");
        list.add(map);

        map = new HashMap<String, Object>();
        map.put("img", R.drawable.e04e);
        map.put("title", "dog");
        map.put("info", "efdfdg");
        list.add(map);

        map = new HashMap<String, Object>();
        map.put("img", R.drawable.e11a);
        map.put("title", "hello");
        map.put("info", "every thing");
        list.add(map);

        map = new HashMap<String, Object>();
        map.put("img", R.drawable.e11d);
        map.put("title", "world");
        map.put("info", "hello world");
        list.add(map);

        return list;
    }
}

如果自定义ListView而不是继承ListActivity需要如下实现,定义一个mylist.xml,在ListView中可以定义其他属性。

<?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="vertical" >
    <ListView
        android:id="@+id/listview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        ></ListView>
</LinearLayout>

如此,DemoActivity中的代码就要做如下修改了:

public class Demo13Activity extends Activity {
    private ListView lv;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mylist);
        lv = (ListView)findViewById(R.id.listview);
        SimpleAdapter adapter = new SimpleAdapter(this, getData(),
                R.layout.main, new String[] { "img", "title", "info" },
                new int[] { R.id.img, R.id.title, R.id.info });
              lv.setAdapter(adapter);
    }
时间: 2024-11-04 23:52:28

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

1.SimpleAdapter是ArrayList和ListView的桥梁,这个ArrayList礼拜的每一项都是一个Map<String,?>类型.ArrayList当中的每一项Map对象都和ListView里边的每一项进行数据绑定一一对应. 2.SimpleAdapter的构造函数: SimpleAdapter(Context  context, List<? extends Map<String, ?>>  data, int resource, String[]

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

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