android之ListView(列表)

android界面中顯示列表效果的幾種方式:

方式一. 繼承ListActivity,使用Listadapter關鍵代碼如下:

	private ListAdapter mListAdapter;
	private List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		listItems=getListItems();
		mListAdapter = new ListAdapter(this,listItems);
		setListAdapter(mListAdapter);
	}
	private List<Map<String, Object>> getListItems() 
	{
	        	 Map<String, Object> map = new HashMap<String, Object>();
	        	 map.put("mytitle","Oracle" );
	        	 map.put("myimage", R.drawable.a);
	        	 map.put("myimages", R.drawable.rating_5);
	        	 listItems.add(map);
	        	  map = new HashMap<String, Object>();
	        	 map.put("mytitle","Sqlite" );
	        	 map.put("myimage", R.drawable.b);
	        	 map.put("myimages", R.drawable.rating_5);
	        	 listItems.add(map);
	        	  map = new HashMap<String, Object>();
	        	 map.put("mytitle","MySql" );
	        	 map.put("myimage", R.drawable.c);
	        	 map.put("myimages", R.drawable.rating_5);
	        	 listItems.add(map);
	            
		return listItems;
	}

ListAdapter代碼:

package org.anjoy.act;

import java.util.List;
import java.util.Map;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class ListAdapter extends BaseAdapter {
	private Context context;//上下文路徑
	private LayoutInflater inflater;//視圖容器
	private List<Map<String,Object>> listitems;//item信息集合
	
	public class holderView //自定義控件集合
	{
		private TextView mytitle;
		private ImageView myimage;
		private ImageView myimages;
	}
	
	//構造DeviceAdapter方法
	public ListAdapter(Context context,List<Map<String,Object>> listitems)
	{
		this.context=context;
		this.inflater=LayoutInflater.from(context);//創建視圖容器
		this.listitems=listitems;
	}

	public int getCount() {
		// TODO Auto-generated method stub
		return listitems.size();
	}

	public Object getItem(int arg0) {
		// TODO Auto-generated method stub
		return listitems.get(arg0);
	}

	public long getItemId(int arg0) {
		// TODO Auto-generated method stub
		return arg0;
	}

	public View getView(int position, View convertView, ViewGroup parent) {
		// 自定義視圖
		holderView mView =null;
		if(convertView==null)
		{
			mView=new holderView();
			//獲取listitem佈局文件
			convertView=inflater.inflate(R.layout.main, null);
			//獲取控件對象
			mView.mytitle=(TextView)convertView.findViewById(R.id.mytitle);
			mView.myimage =(ImageView)convertView.findViewById(R.id.myimage);
			mView.myimages =(ImageView)convertView.findViewById(R.id.myimageview);
			//設置控件對象到convertview視圖集合中
			convertView.setTag(mView);
		}
		else
		{
			mView =(holderView)convertView.getTag();
		}
		//設置item控件上的值
		mView.mytitle.setText((String) listitems.get(position).get("mytitle"));
	            mView.myimage.setBackgroundResource((Integer)listitems.get(position).get("myimage"));
	            mView.myimages.setBackgroundResource((Integer)listitems.get(position).get("myimages"));
	            mView.myimage.setOnClickListener(new OnClickListener() {
					
					public void onClick(View v) {
						// TODO Auto-generated method stub
						new AlertDialog.Builder(context)
	            		.setIcon(R.drawable.alert)
	            		.setTitle("溫馨提示")
	            		.setMessage("請您操作看看!")
	            		.setPositiveButton("確定", null)
	            		.show();
					}
				});
	            
		return convertView;
	}
}


效果圖:



3.方法二:activity繼承Listview,使用SimpleAdapter和佈局文件

關鍵代碼:

@Override
	 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        SimpleAdapter adapter = new SimpleAdapter(this,getData(),R.layout.main,
                new String[]{"mytitle","myimageview","myimage"},
                new int[]{R.id.mytitle,R.id.myimageview,R.id.myimage});
        setListAdapter(adapter);
    }
 
    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("mytitle", "IOS教材");
        map.put("myimageview",  R.drawable.rating_5);
        map.put("myimage", R.drawable.a);
        list.add(map);
 
        map = new HashMap<String, Object>();
        map.put("mytitle", "Android教材");
        map.put("myimageview",R.drawable.rating_5);
        map.put("myimage", R.drawable.b);
        list.add(map);
 
        map = new HashMap<String, Object>();
        map.put("mytitle", "java教材");
        map.put("myimageview", R.drawable.rating_5);
        map.put("myimage", R.drawable.c);
        list.add(map);
         
        return list;
    }

效果圖如上


2. 方式三:activity中創建ListView對象,使用ListAdapter

@Override
	 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        SimpleAdapter adapter = new SimpleAdapter(this,getData(),R.layout.main,
                new String[]{"mytitle","myimageview","myimage"},
                new int[]{R.id.mytitle,R.id.myimageview,R.id.myimage});
        setListAdapter(adapter);
    }
 
    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("mytitle", "IOS教材");
        map.put("myimageview",  R.drawable.rating_5);
        map.put("myimage", R.drawable.a);
        list.add(map);
 
        map = new HashMap<String, Object>();
        map.put("mytitle", "Android教材");
        map.put("myimageview",R.drawable.rating_5);
        map.put("myimage", R.drawable.b);
        list.add(map);
 
        map = new HashMap<String, Object>();
        map.put("mytitle", "java教材");
        map.put("myimageview", R.drawable.rating_5);
        map.put("myimage", R.drawable.c);
        list.add(map);
         
        return list;
    }





效果圖如下:

發佈了59 篇原創文章 · 獲贊 5 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章