第四章:android核心组件之SimpleAdapter适配器构造函数的详解(二)

package com.example.simpleadapter;

import java.util.ArrayList;
import java.util.HashMap;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;


public class MainActivity extends Activity {
    //【1】首先,为ListViw列表控件定义一个相应的----列表控件变量
    //【1】其次,再为响应ListView列表项单击事件的TextView文本框控件定义一个相应的----变量
    private ListView lv;
    private TextView txtNotice;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //【2】将ListView列表控件与相应的控件变量关联起来
        //【2】将TextView文本框控件与相应的变量也关联起来
        txtNotice=(TextView) findViewById(R.id.txtNotice);
        lv=(ListView) findViewById(R.id.lv);
        //【3】定义一个ArrayList集合,用来存储ListView列表控件中每一个列表项 的数据内容
        ArrayList<HashMap<String,Object>> users=new ArrayList<HashMap<String,Object>>();
        //【4】向ArrayList集合数组中,添加数据
        for(int i=0;i<10;i++){
            //【1】首先,每循环一次,就创建并且实例化一个HashMap类的对象
            //【1】每一个HashMap类的对象,就相当于一个数组,每一个数组中,以键值对的形式存储三个元素,图片,名字,年龄
            HashMap<String,Object> user=new HashMap<String, Object>();
            //【2】通过HashMap中的成员方法put()向集合中以键值对--key--->value的形式向集合中添加数据
            user.put("img",R.drawable.img1);
            user.put("username", "名字("+i+")");
            user.put("age", (11+i)+"");
            //【3】然后,通过ArrayList集合类中的成员方法add()将HashMap类的这个实例化对象添加到集合ArrayList集合中
            users.add(user);
        }
        //【5】将SimpleAdapter适配器与进行数据绑定
        SimpleAdapter saImageItems=new SimpleAdapter(this,
                users,                                   //数据来源,需要绑定的数据
                R.layout.user,                           //每一个user.xml相当于ListView中的一个组件
                new String[]{"img","username","age"},    //分别对应value的id
                new int[]{R.id.img,R.id.txtName,R.id.txtAge}
                );
        //【7】通过ListView列表控件类中的成员方法setAdapter(),将列表控件与SimpleAdapter适配器进行绑定
        lv.setAdapter(saImageItems);
        //【8】为ListView中的每一列表项设置事件监听器
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                txtNotice.setText("你点击了第:"+position+"行!");
            }
        });
    }
}
/********************************************************************************
 * 1--使用SimpleAdapter适配器的数据一般都是由--HashMap构成的列表,列表的每一节,对应ListView中的每一行
 * 2--通过SimpleAdapter的构造函数,将HashMap每个键的数据映射到布局文件中所对应的控件上
 * 3--这个布局文件一般根据自己的需要来自己定义
 * ******************************************************************************/
/*************************【梳理一下使用SimpleAdapter适配器的步骤】***********************
 * 1--根据需要定义ListView每行所需要实现的布局
 * 2--定义一个HaspMap所构成的列表,将以键值对的方式存储在里面
 * 3--构造SimpleAdapter适配器的对象
 * 4--将ListView绑定到SimpleAdapter适配器上
 * ******************************************************************************/

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

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <ImageView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/img">
        </ImageView>

        <TextView
            android:id="@+id/txtName"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:textColor="#000000"
           />

        <TextView
            android:id="@+id/txtAge"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:textColor="#000000"
           />
    </TableRow>

</TableLayout>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值