在ListView中使用SimpleAdapter

在上一篇博客中介绍了在ListView中使用 ArrayAdapter,使用ArrayAdapter存在一个弊端,只能处理一种数据,在上一篇博客中,只能处理好友的姓名,不能处理好友的图片,为了既可以处理好友的姓名又可以处理好友的图片,ListView中提供了一个SimpleAdapter,使用SimpleAdapter既可以处理好友的姓名,也可以处理好友的图片,实现的效果如下



首先使用Android Studio创建一个Android工程

1、在drawable文件夹添加十张图片,作为人物的头像



修改activity_main.xml文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context="example.administrator.arrayadaptedemo.MainActivity">

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

</RelativeLayout>


3、新建一个item_listview.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="wrap_content"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/iv_photo"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:src="@drawable/man1"/>

    <TextView
        android:id="@+id/tv_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:textSize="20sp"
        android:text="小志"/>

</LinearLayout>

4、新建一个Person类,用于处理好友的信息

package example.administrator.arrayadaptedemo;

public class Person {

    private String name;
    private int imageId;

    public Person(String name, int imageId) {
        this.name = name;
        this.imageId = imageId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getImageId() {
        return imageId;
    }

    public void setImageId(int imageId) {
        this.imageId = imageId;
    }
}


最后修改MainActivity.java文件

package example.administrator.arrayadaptedemo;

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

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

public class MainActivity extends Activity {

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

        //创建集合
        List<Person> personList = new ArrayList<Person>();

        //创建person对象
        Person person1 = new Person("刘得意", R.drawable.man1);
        Person person2 = new Person("王锐", R.drawable.man2);
        Person person3 = new Person("何煜中", R.drawable.man3);
        Person person4 = new Person("王磊", R.drawable.man4);
        Person person5 = new Person("冯松", R.drawable.man5);
        Person person6 = new Person("裴培", R.drawable.man6);
        Person person7 = new Person("马骁", R.drawable.man7);
        Person person8 = new Person("马婧", R.drawable.man8);
        Person person9 = new Person("周俊升", R.drawable.man9);
        Person person10 = new Person("贺祺", R.drawable.man10);

        //将Person对象添加到集合中
        personList.add(person1);
        personList.add(person2);
        personList.add(person3);
        personList.add(person4);
        personList.add(person5);
        personList.add(person6);
        personList.add(person7);
        personList.add(person8);
        personList.add(person9);
        personList.add(person10);

        //获得布局文件上的ListView控件
        ListView lv = (ListView) findViewById(R.id.lv);

        //集合中每个元素都包含ListView条目需要的所有数据
        // 该案例中每个条目需要一个字符串和一个整型,所以使用一个map来封装这两种数据
        List< Map<String, Object> > data = new ArrayList< Map<String,Object> >();

        for(Person p : personList) {

            Map<String, Object> map = new HashMap <String, Object>();
            map.put("name", p.getName());
            map.put("photo", p.getImageId());
            data.add(map);
        }

        //给ListView设置适配器
        //第一个参数:上下文
        //第二个参数:用于设置好友的头像和名字
        //第三个参数:布局文件的资源id
        //第四个参数:设置朋友的头像和名字属性
        //第五个参数:设置朋友的头像和名字的资源id
        lv.setAdapter(new SimpleAdapter(
                this,
                data,
                R.layout.item_listview,
                new String[]{"photo", "name"},
                new int[]{R.id.iv_photo, R.id.tv_name}));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值