簡單的ListView使用

簡單的ListView使用。

使用一個ListView的Activity可以繼承ListActivity,更方便的調用ListView。

package com.example.org.suju.work7;

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.content.Context;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

/**
 * 
 * @author Administrator
 *ListView通常都是搭配一個適配器使用,這裏使用SimpleAdapter適配器,使用指定視圖顯示數據
 *
 */
public class MainActivity extends ListActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//定義數據,一個ArrayList,元素類型爲Map<String, Object>
		ArrayList<Map<String, Object>> array = new ArrayList<Map<String, Object>>();
		Map<String, Object> map1 = new HashMap<String, Object>();
		map1.put("user", "save");
		map1.put("value", R.drawable.save);
		array.add(map1);
		
		/** 每個map對應將要映射到指定視圖View的數據。這裏和user.xml對應,user對應TextView
		value對應ImageView
		*/
		map1 = new HashMap<String, Object>();
		map1.put("user", "bold");
		map1.put("value", R.drawable.bold);
		array.add(map1);
		
		map1 = new HashMap<String, Object>();
		map1.put("user", "find");
		map1.put("value", R.drawable.find);
		array.add(map1);
		
		map1 = new HashMap<String, Object>();
		map1.put("user", "cut");
		map1.put("value", R.drawable.cut);
		array.add(map1);
		
		/** 自定義一個Adapter
		 * 第一個參數爲當前Activity,第二個array爲指定需要顯示的數據集合
		 * 第三個參數是將要顯示每行數據的View佈局,
		 * 第四個參數是字符數組,對應View佈局中的id名稱
		 * 第五個參數是int數組,對應佈局文件中的id。
		 */
		MyAdapter adapter = new MyAdapter(this, array, R.layout.user,
											new String[]{"user", "value"},
											new int[]{R.id.user, R.id.value});
		//設置適配器
		setListAdapter(adapter);
	}
	
	@Override
	protected void onListItemClick(ListView l, View v, int position, long id) {
		// 響應list點擊事件
		super.onListItemClick(l, v, position, id);
		TextView user = (TextView) v.findViewById(R.id.user);
		Toast.makeText(this, "你選擇了:" + user.getText(), 1000).show();
		System.out.println("debug:" + user.getText());
	}

	@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;
	}
	
	/** 
	 * 
	 * @author Administrator
	 * 繼承SimpleAdapter 實現的適配器
	 *
	 */
	class MyAdapter extends SimpleAdapter
	{
		private LayoutInflater layout;
		public MyAdapter(Context context, List<? extends Map<String, ?>> data,
				int resource, String[] from, int[] to) {
			super(context, data, resource, from, to);
		}
		
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub
			View result = super.getView(position, convertView, parent);
			//獲取LayoutInflater的實例對象
			layout = getLayoutInflater();
			if (result == null) {
				//載入指定佈局
				layout.inflate(R.layout.user, null);
			}
			return result;
		}
	
	}
}

佈局文件

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent">
		<ListView android:id="@id/android:list" android:layout_width="fill_parent"
			android:layout_height="wrap_content" android:drawSelectorOnTop="true"
			android:scrollbars="vertical" />
</LinearLayout>
顯示list行數據的view

<LinearLayout 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:orientation="horizontal"
  	>
  	
    <ImageView 
        android:id="@+id/value"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        />
    <TextView 
        android:id="@+id/user"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="22px"
        />
</LinearLayout>

顯示效果:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章