现在的位置: 首页 > 综合 > 正文

SimpleAdapter适配器填充ListView

2018年03月31日 ⁄ 综合 ⁄ 共 4094字 ⁄ 字号 评论关闭

SimpleAdapter是扩展性最好的适配器。以下是参数详细介绍:

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

参数context:表示上下文对象或者环境对象。

参数data:     表示数据源。往往采用List<Map<String, Object>>集合对象。

                         Map列表,列表要显示的数据,如例子中的getData(),类型要与上面的一致,每条项目要与from中指定条目一致

参数resource:自定义的ListView中每个item的布局文件的资源id。用R.layout.文件名的形式来调用。

                           ListView单项布局文件的Id,这个布局就是你自定义的布局了,你想显示什么样子的布局都在这个布局中。

                           这个布局中必须包括了to中定义的控件id

参数 from:     其实是数据源中Map的key组成的一个String数组

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

参数 to:         表示数据源中Map的value要放置在item中的哪个控件位置上。其实就是自定义的item布局文件中每个控件的id

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

下面是个自定义LIstView的例子:

1、MainActivity.java

package com.example.listview;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class MainActivity extends Activity {

	private ListView listView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		SimpleAdapter adapter = new SimpleAdapter(MainActivity.this, getData(), R.layout.listview_item, new String[]{"touxiang","bianhao","xingming","miaoshu"}, new int[]{R.id.touxiang,R.id.bianhao,R.id.xingming,R.id.miaoshu});
		listView = (ListView) findViewById(R.id.listView);
		listView.setAdapter(adapter);
		listView.setOnItemClickListener(new OnItemClickListener() {
			@SuppressWarnings("unchecked")
			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				ListView myListView = (ListView) arg0;
				HashMap<String, Object> item = ((HashMap<String, Object>) myListView.getItemAtPosition(arg2));
				Toast.makeText(MainActivity.this, item.get("bianhao").toString(), Toast.LENGTH_LONG).show();
			}
		});
	
	}
    //获取数据:1.可从本地获取 2.从数据库获取
	private List<HashMap<String, Object>> getData(){

		List<HashMap<String,Object>> data = new ArrayList<HashMap<String,Object>>();
		HashMap<String, Object> hashMap = new HashMap<String, Object>();
		//hashMap.put("id", student.getStudentId());
		hashMap.put("touxiang", R.drawable.ic_launcher);
		hashMap.put("bianhao", "编号");
		hashMap.put("xingming", "姓名");
		hashMap.put("miaoshu", "描述");
		data.add(hashMap);
		
		hashMap = new HashMap<String, Object>();
		hashMap.put("touxiang", R.drawable.ic_launcher);
		hashMap.put("bianhao", "001");
		hashMap.put("xingming", "张三");
		hashMap.put("miaoshu", "三好坏蛋");
		data.add(hashMap);
		return data;
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
}

2、activity_main.xml

<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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    <ListView 
        android:id="@+id/listView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:divider="#00ff00"  
    	android:dividerHeight="1dp"
       />
</RelativeLayout>

3、listview_item.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" >
    <ImageView 
        android:id="@+id/touxiang"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="3dp"
        />
    <TextView 
        android:id="@+id/bianhao"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        />
    <TextView 
        android:id="@+id/xingming"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        />
    <TextView 
        android:id="@+id/miaoshu"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        />
</LinearLayout>

抱歉!评论已关闭.