Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android中關於Adapter的使用(中)SimpleAdapter

Android中關於Adapter的使用(中)SimpleAdapter

編輯:關於Android編程

在前面的兩篇文章中,我們講到了關於ArrayAdapter的使用。用ArrayAdapter來在ListView中展示數據是很不錯的,但是很多時候,我們的ListView中,可不只是展示文字,我們還想展示圖片呢。

可能有些朋友剛才會問,第二篇不是已經可以展示圖片了嗎?是的呀,但是它就只能展示我們在xml中定義給它的那一張啊。

而究其原因,其實是因為我們傳給它的數據源就只有字符串,沒有傳給圖片給它,而事實上,我們也只能傳文字給它,因為它用的是TextView嘛。

所以,光用ArrayAdapter顯然不夠豐富多彩,生活呀,總得有點不一樣吧。

接下來我們就來看看在Android中關於SimpleAdapter的使用吧。

SimpleAdapter

SimpleAdapter其實一點也不simple的,因為我們需要自己去定義每個listitem的布局,如下:

   
    
        
    	
我們定義了1個ImageView控件和兩個TextView控件。 接下來我們看看MainActivity中的代碼:
	List> simpleList = new ArrayList>();
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		initSimpleList();
		
		ListView listView = (ListView)findViewById(R.id.listView1);
		SimpleAdapter adapter = new SimpleAdapter(this, simpleList, R.layout.simpleadapter, 
				new String[] {"title","content","drawable"}, 
				new int[] {R.id.tvTitle,R.id.tvContent,R.id.imageView1});
		listView.setAdapter(adapter);
	}
	
	private void initSimpleList(){
		String[] titles = {"title1", "title2", "title3","title4", "title5", "title6"};
		String[] contents = {"content1", "content2", "content3","content4", "content5", "content6"};
		int[] drawableIds = {R.drawable.computer,R.drawable.excel,R.drawable.game,
				R.drawable.gc,R.drawable.network,R.drawable.pdf};
		Map map;
		for(int i=0;i<6;i++){
			map = new HashMap();
			map.put("title", titles[i]);
			map.put("content", contents[i]);
			map.put("drawable", drawableIds[i]);
			simpleList.add(map);
		}
	}

從上面的代碼中,我們可以看到,跟ArrayAdapter類似,也要先創建一個SimpleAdapter,其構造函數如下:
    /**
     * Constructor
     * 
     * @param context The context where the View associated with this SimpleAdapter is running
     * @param data A List of Maps. Each entry in the List corresponds to one row in the list. The
     *        Maps contain the data for each row, and should include all the entries specified in
     *        "from"
     * @param resource Resource identifier of a view layout that defines the views for this list
     *        item. The layout file should include at least those named views defined in "to"
     * @param from A list of column names that will be added to the Map associated with each
     *        item.
     * @param to The views that should display column in the "from" parameter. These should all be
     *        TextViews. The first N views in this list are given the values of the first N columns
     *        in the from parameter.
     */
    public SimpleAdapter(Context context, List> data,
            int resource, String[] from, int[] to) {
        mData = data;
        mResource = mDropDownResource = resource;
        mFrom = from;
        mTo = to;
        mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
1)context,上下文 2)List> data,這是一個包含Map對象的list,也就是說,每個map對象都是每個item對應的內容。 3)resource,對應的就是這個item的layout,也就是我們上面自定義的布局。 4)from 和 to,這兩個參數,其實就是做一個映射,將map中key對應的值,傳給layout中每個對象的id。比如,我們上面在map中設置了title,那麼這個title的值就是設給item布局對應的TextView(tvTitle),而其它的事情就由SimpleAdapter來幫我們操作了。 下面就是效果圖(有點丑,請不要見怪,@-@!!):
雖然說SimpleAdapter一點也不simple,但是如果我們理解了,用起來是不是也是挺簡單的呢?
大家如果對ArrayAdapter有興趣的話,可以看看前面關於ArrayAdapter的文章: Android中關於Adapter的使用(上)ArrayAdapter
Android中關於Adapter的使用(再上)ArrayAdapter

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