Android ListView入门知识--各种Adapter配合使用二

  • 内容
  • 评论
  • 相关

本次介绍SimpleAdapter
SimpleAdapter
simpleAdapter的扩展性最好,可以定义各种各样的布局出来,可以放上ImageView(图片),还可以放上Button(按钮),CheckBox(复选框)等等。下面的代码都直接继承了ListActivity,ListActivity和普通的Activity没有太大的差别,不同就是对显示ListView做了许多优化,方面显示而已。
主程序文件

package com.example.mysimpleada;

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

import android.os.Bundle;
import android.app.Activity;
import android.app.ListActivity;
import android.view.Menu;
import android.widget.SimpleAdapter;

public class MainActivity extends ListActivity  {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
//		setContentView(R.layout.activity_main);
		
		SimpleAdapter adapter = new SimpleAdapter(this, getData(), R.layout.view_list, 
				new String[]{"title","info","img"}, new int[]{R.id.title,R.id.info,R.id.img});
		setListAdapter(adapter);
	}

	@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;
	}
	
	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("title", "T1");
		map.put("info", "myInfo");
		map.put("img", R.drawable.ec);
		list.add(map);
		
		map = new HashMap<String, Object>();
		map.put("title", "T2");
		map.put("info", "myInfo2");
		map.put("img", R.drawable.ec);
		list.add(map);
		
		return list;
	}

}

布局文件

<?xml version="1.0" encoding="utf-8"?>
   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:orientation="horizontal" android:layout_width="fill_parent"
       android:layout_height="fill_parent">
    
    
       <ImageView android:id="@+id/img"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_margin="5dp"/>
    
       <LinearLayout android:orientation="vertical"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content">
    
           <TextView android:id="@+id/title"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:textColor="#FFFFFFFF"
               android:textSize="22sp" />
           <TextView android:id="@+id/info"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:textColor="#FFFFFFFF"
               android:textSize="13sp" />
    
       </LinearLayout>
    
    
   </LinearLayout>

效果图如下:

使用simpleAdapter的数据用一般都是HashMap构成的List,list的每一节对应ListView的每一行。HashMap的每个键值数据映射到布局文件中对应id的组件上。因为系统没有对应的布局文件可用,我们可以自己定义一个布局vlist.xml。下面做适配,new一个SimpleAdapter参数一次是:this,布局文件(vlist.xml),HashMap的 title 和 info,img。布局文件的组件id,title,info,img。布局文件的各组件分别映射到HashMap的各元素上,完成适配。
完整项目下载地址
http://pan.baidu.com/s/1kTkc1fD

评论

0条评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注