现在的位置: 首页 > 综合 > 正文

android之ListView(列表)

2013年08月21日 ⁄ 综合 ⁄ 共 4854字 ⁄ 字号 评论关闭

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;
    }

效果图如下:

抱歉!评论已关闭.