SimpleAdapter

概述

SimpleAdapter简单数组适配器:

  • 父类: BaseAdapter
  • 方法: SimpleAdapter

声明

public SimpleAdapter(Context context, 
                    List<? extends Map<String,?>> data,
                    @LayoutRes int resource, 
                    String[] from, 
                    @IdRes int[] to)

参数解释

  • context 上下文,即当前的Activity
List<? extends Map<String,?>> data

一个嵌套Map集合类型的list集合数据源

  • @LayoutRes int resource 你设定的一个布局中必须包括了to中定义的控件id,可以直接使用系统给的布局

  • String[] from 一个String数组,要求是一个K值的字符串数组,具体的后面会讲到

  • @IdRes int[] to 一个与K值匹配的的控件对象

与ArrayAdapter的区别

Sadapter可以展示混合数据值类型,而Aadapter只能展示单个数据类型。

能展示混合数据类型意味着,需要设定对应类型的控件。那么如何对不同数据类型进行区分呢?假如能够根据他的名称就能判断什么类型就行了? 所以我们需要一个Map集合。

利用Map存值的特点,可以进行一个数据区分。

Map <K、V>

源代码

MainActivity

package com.example.administrator.listview;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.SimpleAdapter;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    //设置3个按钮
    Button btnArray, btnSimple, btnBase;

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

        //找到xml中的按钮
        btnArray = ((Button) findViewById(R.id.array_adapter));
        btnSimple = ((Button) findViewById(R.id.simple_adapter));
        btnBase = ((Button) findViewById(R.id.base_adapter));

        //设置监听事件
        btnArray.setOnClickListener(this);
        btnSimple.setOnClickListener(this);
        btnBase.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {

        switch (v.getId()) {

            //按下第一个按钮的情况
            case R.id.array_adapter:

                Intent intent = new Intent(this, ArrayActivity.class);
                startActivity(intent);

                break;

            //按下第二个按钮的情况
            case R.id.simple_adapter:

                Intent simpleIntent = new Intent(this,SimpleActivity.class);
                startActivity(simpleIntent);

                break;
        }

    }
}

SimpleActivity

package com.example.administrator.listview;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.SmsManager;
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 SimpleActivity extends AppCompatActivity {

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

        ListView listView = ((ListView) findViewById(R.id.listview));


        //SimpleAdapter的数据源
        //一个里边是Map类型的List,这个List变量就是data
        //最后传给SimpleAdapter的也就是data
        List<Map<String, String>> data = new ArrayList<>();

        HashMap<String, String> map;


        map = new HashMap<>();

        map.put("name", "john");

        map.put("age", "21");

        data.add(map);


        map = new HashMap<>();

        map.put("name", "laowang");

        map.put("age", "22");

        data.add(map);


        map = new HashMap<>();

        map.put("name", "zz");

        map.put("age", "20");

        data.add(map);

        //使用系统内置的布局simple_expandable_list_item_2,注意引用前加上android
        //布局中有两个TextView,即text1和text2
        SimpleAdapter simpleAdapter = new SimpleAdapter(this, data, android.R.layout.simple_expandable_list_item_2,
                new String[]{"name", "age"}, new int[]{android.R.id.text1, android.R.id.text2});
        //后面两个参数的含义是:
        //String表示把哪个字段绑定到那个View上
        //比如把"name"字段绑定到text1这个View上
        //这样就可以通过这个Adapter把布局和数据对应起来了

        listView.setAdapter(simpleAdapter);

    }

}

activity_simple

<?xml version="1.0" encoding="utf-8"?>

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.administrator.listview.SimpleActivity">

</ListView>

猜你喜欢

转载自blog.csdn.net/qq_24118527/article/details/78506714