【转】 android之ListView(列表)

android界面中显示列表效果的几种方式:

方式一. 继承ListActivity,使用Listadapter关键代码如下:

[html]  view plain copy
  1. private ListAdapter mListAdapter;  
  2. private List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();  
  3. @Override  
  4. protected void onCreate(Bundle savedInstanceState) {  
  5.     // TODO Auto-generated method stub  
  6.     super.onCreate(savedInstanceState);  
  7.     listItems=getListItems();  
  8.     mListAdapter = new ListAdapter(this,listItems);  
  9.     setListAdapter(mListAdapter);  
  10. }  
  11. private List<Map<String, Object>> getListItems()   
  12. {  
  13.              Map<String, Object> map = new HashMap<String, Object>();  
  14.              map.put("mytitle","Oracle" );  
  15.              map.put("myimage", R.drawable.a);  
  16.              map.put("myimages", R.drawable.rating_5);  
  17.              listItems.add(map);  
  18.               map = new HashMap<String, Object>();  
  19.              map.put("mytitle","Sqlite" );  
  20.              map.put("myimage", R.drawable.b);  
  21.              map.put("myimages", R.drawable.rating_5);  
  22.              listItems.add(map);  
  23.               map = new HashMap<String, Object>();  
  24.              map.put("mytitle","MySql" );  
  25.              map.put("myimage", R.drawable.c);  
  26.              map.put("myimages", R.drawable.rating_5);  
  27.              listItems.add(map);  
  28.               
  29.     return listItems;  
  30. }  

ListAdapter代码:

[html]  view plain copy
  1. package org.anjoy.act;  
  2.   
  3. import java.util.List;  
  4. import java.util.Map;  
  5.   
  6. import android.app.AlertDialog;  
  7. import android.content.Context;  
  8. import android.content.DialogInterface;  
  9. import android.view.LayoutInflater;  
  10. import android.view.View;  
  11. import android.view.View.OnClickListener;  
  12. import android.view.ViewGroup;  
  13. import android.widget.BaseAdapter;  
  14. import android.widget.ImageView;  
  15. import android.widget.TextView;  
  16.   
  17. public class ListAdapter extends BaseAdapter {  
  18.     private Context context;//上下文路径  
  19.     private LayoutInflater inflater;//视图容器  
  20.     private List<Map<String,Object>> listitems;//item信息集合  
  21.       
  22.     public class holderView //自定义控件集合  
  23.     {  
  24.         private TextView mytitle;  
  25.         private ImageView myimage;  
  26.         private ImageView myimages;  
  27.     }  
  28.       
  29.     //构造DeviceAdapter方法  
  30.     public ListAdapter(Context context,List<Map<String,Object>> listitems)  
  31.     {  
  32.         this.context=context;  
  33.         this.inflater=LayoutInflater.from(context);//创建视图容器  
  34.         this.listitems=listitems;  
  35.     }  
  36.   
  37.     public int getCount() {  
  38.         // TODO Auto-generated method stub  
  39.         return listitems.size();  
  40.     }  
  41.   
  42.     public Object getItem(int arg0) {  
  43.         // TODO Auto-generated method stub  
  44.         return listitems.get(arg0);  
  45.     }  
  46.   
  47.     public long getItemId(int arg0) {  
  48.         // TODO Auto-generated method stub  
  49.         return arg0;  
  50.     }  
  51.   
  52.     public View getView(int position, View convertView, ViewGroup parent) {  
  53.         // 自定义视图  
  54.         holderView mView =null;  
  55.         if(convertView==null)  
  56.         {  
  57.             mView=new holderView();  
  58.             //获取listitem布局文件  
  59.             convertView=inflater.inflate(R.layout.main, null);  
  60.             //获取控件对象  
  61.             mView.mytitle=(TextView)convertView.findViewById(R.id.mytitle);  
  62.             mView.myimage =(ImageView)convertView.findViewById(R.id.myimage);  
  63.             mView.myimages =(ImageView)convertView.findViewById(R.id.myimageview);  
  64.             //设置控件对象到convertview视图集合中  
  65.             convertView.setTag(mView);  
  66.         }  
  67.         else  
  68.         {  
  69.             mView =(holderView)convertView.getTag();  
  70.         }  
  71.         //设置item控件上的值  
  72.         mView.mytitle.setText((String) listitems.get(position).get("mytitle"));  
  73.                 mView.myimage.setBackgroundResource((Integer)listitems.get(position).get("myimage"));  
  74.                 mView.myimages.setBackgroundResource((Integer)listitems.get(position).get("myimages"));  
  75.                 mView.myimage.setOnClickListener(new OnClickListener() {  
  76.                       
  77.                     public void onClick(View v) {  
  78.                         // TODO Auto-generated method stub  
  79.                         new AlertDialog.Builder(context)  
  80.                         .setIcon(R.drawable.alert)  
  81.                         .setTitle("温馨提示")  
  82.                         .setMessage("请您操作看看!")  
  83.                         .setPositiveButton("确定", null)  
  84.                         .show();  
  85.                     }  
  86.                 });  
  87.                   
  88.         return convertView;  
  89.     }  
  90. }  


效果图:



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

关键代码:

[html]  view plain copy
  1. @Override  
  2.      public void onCreate(Bundle savedInstanceState) {  
  3.         super.onCreate(savedInstanceState);  
  4.    
  5.         SimpleAdapter adapter = new SimpleAdapter(this,getData(),R.layout.main,  
  6.                 new String[]{"mytitle","myimageview","myimage"},  
  7.                 new int[]{R.id.mytitle,R.id.myimageview,R.id.myimage});  
  8.         setListAdapter(adapter);  
  9.     }  
  10.    
  11.     private List<Map<String, Object>> getData() {   
  12.         List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();  
  13.    
  14.         Map<String, Object> map = new HashMap<String, Object>();  
  15.         map.put("mytitle", "IOS教材");  
  16.         map.put("myimageview",  R.drawable.rating_5);  
  17.         map.put("myimage", R.drawable.a);  
  18.         list.add(map);  
  19.    
  20.         map = new HashMap<String, Object>();  
  21.         map.put("mytitle", "Android教材");  
  22.         map.put("myimageview",R.drawable.rating_5);  
  23.         map.put("myimage", R.drawable.b);  
  24.         list.add(map);  
  25.    
  26.         map = new HashMap<String, Object>();  
  27.         map.put("mytitle", "java教材");  
  28.         map.put("myimageview", R.drawable.rating_5);  
  29.         map.put("myimage", R.drawable.c);  
  30.         list.add(map);  
  31.            
  32.         return list;  
  33.     }  

效果图如上


2. 方式三:activity中创建ListView对象,使用ListAdapter

[html]  view plain copy
  1. @Override  
  2.      public void onCreate(Bundle savedInstanceState) {  
  3.         super.onCreate(savedInstanceState);  
  4.    
  5.         SimpleAdapter adapter = new SimpleAdapter(this,getData(),R.layout.main,  
  6.                 new String[]{"mytitle","myimageview","myimage"},  
  7.                 new int[]{R.id.mytitle,R.id.myimageview,R.id.myimage});  
  8.         setListAdapter(adapter);  
  9.     }  
  10.    
  11.     private List<Map<String, Object>> getData() {   
  12.         List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();  
  13.    
  14.         Map<String, Object> map = new HashMap<String, Object>();  
  15.         map.put("mytitle", "IOS教材");  
  16.         map.put("myimageview",  R.drawable.rating_5);  
  17.         map.put("myimage", R.drawable.a);  
  18.         list.add(map);  
  19.    
  20.         map = new HashMap<String, Object>();  
  21.         map.put("mytitle", "Android教材");  
  22.         map.put("myimageview",R.drawable.rating_5);  
  23.         map.put("myimage", R.drawable.b);  
  24.         list.add(map);  
  25.    
  26.         map = new HashMap<String, Object>();  
  27.         map.put("mytitle", "java教材");  
  28.         map.put("myimageview", R.drawable.rating_5);  
  29.         map.put("myimage", R.drawable.c);  
  30.         list.add(map);  
  31.            
  32.         return list;  
  33.     }  





效果图如下:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值