Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發系列(十九):為SimpleAdapter設置樣式

Android開發系列(十九):為SimpleAdapter設置樣式

編輯:關於Android編程

Adapter的作用:數據在adapter中做了處理之後,顯示在視圖上

一般的對於ArrayAdapter來說,只需要把一個數組和一個樣式傳遞給ArrayAdapter之後就可以在視圖上用一個列表顯示出這個字符串數組。

例如下邊的代碼:

listView.setAdapter(new ArrayAdapter(this,android.R.layout.simple_list_item_1,ls)); 


但是,比如我們手機的聯系人目錄所示,不僅僅是有列表,而且有頭像,可能還有手機號碼。所以,單純的ArrayAdapter是不能夠實現這種復雜的視圖的。
我們可以用SimpleAdapter來實現這種復雜的視圖,不過需要設計樣式。


我們新建一個Android項目,然後,我們在layout目錄下定義一個ListView,來存放列表:

main.xml:







在定義這個之後,我們就可以寫java代碼了:

SimpleAdapterTest.java:

package org.crazyit.ui;

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

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class SimpleAdapterTest extends Activity
{
	private String[] names = new String[]
		{ "虎頭", "弄玉", "李清照", "李白"};
	private String[] descs = new String[]
		{ "可愛的小孩", "一個擅長音樂的女孩"
			, "一個擅長的文學的女性", "浪漫主義詩人"};	
	//這是三張圖片的id的集合
	private int[] imageIds = new int[]
		{ R.drawable.tiger , R.drawable.nongyu
		, R.drawable.qingzhao , R.drawable.libai};

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		// 創建一個List集合,List集合的元素是Map
		List> listItems = new ArrayList>();
		for (int i = 0; i < names.length; i++)
		{
			Map listItem = new HashMap();
			listItem.put("header", imageIds[i]);
			listItem.put("personName", names[i]);
			listItem.put("desc", descs[i]);
			listItems.add(listItem);
		}
		// 創建一個SimpleAdapter
		SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems,
			R.layout.simple_item, 
			new String[] { "personName", "header" , "desc"},
			new int[] { R.id.name, R.id.header , R.id.desc });
		
		ListView list = (ListView) findViewById(R.id.mylist);
		// 為ListView設置Adapter
		list.setAdapter(simpleAdapter);
		// 為ListView的列表項單擊事件綁定事件監聽器
		list.setOnItemClickListener(new OnItemClickListener()
		{
			// 第position項被單擊時激發該方法。
			@Override
			public void onItemClick(AdapterView parent, View view,
					int position, long id)
			{
				Toast.makeText(getApplicationContext(), names[position]+ "被單擊了", 1).show();
			}
		});
		list.setOnItemSelectedListener(new OnItemSelectedListener()
		{
			// 第position項被選中時激發該方法。
			@Override
			public void onItemSelected(AdapterView parent, View view,
					int position, long id)
			{	
				Toast.makeText(getApplicationContext(), names[position]+ "被選中了", 1).show();
			}
			@Override
			public void onNothingSelected(AdapterView parent)
			{
			}
		});
	}
}


在上邊java代碼中,創建SimpleAdapter對象的時候,我們用到了一個視圖:R.layout.simple_item,這個就是我們自定義的樣式,可以通過這個樣式來實現復雜的視圖。
simple_item.xml:














把這些組合起來就可以構成下邊的效果:

\


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved