Android ListView常用用法

来源:互联网 发布:2017网络十大神曲 编辑:程序博客网 时间:2024/04/29 14:15

ListView是比较常用的控件,但一直都觉得创建ListView步骤有点繁琐,故在此总结一下,方便查阅。

程序效果是实现一个ListView,ListView里面有标题,内容和图片,并加入点击和长按响应。

 

 

 

 

首先在xml里面定义一个ListView

 

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout   
  3.     android:id="@+id/LinearLayout01"   
  4.     android:layout_width="fill_parent"   
  5.     android:layout_height="fill_parent"   
  6.     xmlns:android="http://schemas.android.com/apk/res/android">  
  7. <ListView android:layout_width="wrap_content"   
  8.           android:layout_height="wrap_content"   
  9.           android:id="@+id/ListView01"  
  10.           />  
  11. </LinearLayout>  

 

定义ListView每个条目的Layout,用RelativeLayout实现:

 

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout   
  3.     android:id="@+id/RelativeLayout01"   
  4.     android:layout_width="fill_parent"   
  5.     xmlns:android="http://schemas.android.com/apk/res/android"   
  6.     android:layout_height="wrap_content"   
  7.     android:paddingBottom="4dip"   
  8.     android:paddingLeft="12dip"  
  9.     android:paddingRight="12dip">  
  10. <ImageView   
  11.     android:paddingTop="12dip"  
  12.     android:layout_alignParentRight="true"  
  13.     android:layout_width="wrap_content"   
  14.     android:layout_height="wrap_content"   
  15.     android:id="@+id/ItemImage"  
  16.     />   
  17. <TextView   
  18.     android:text="TextView01"   
  19.     android:layout_height="wrap_content"   
  20.     android:textSize="20dip"   
  21.     android:layout_width="fill_parent"   
  22.     android:id="@+id/ItemTitle"  
  23.     />  
  24. <TextView   
  25.     android:text="TextView02"   
  26.     android:layout_height="wrap_content"   
  27.     android:layout_width="fill_parent"   
  28.     android:layout_below="@+id/ItemTitle"   
  29.     android:id="@+id/ItemText"  
  30.     />  
  31. </RelativeLayout>  

 

 最后在Activity里面调用和加入Listener,具体见注释:

 

Java代码  收藏代码
  1. package com.ray.test;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5.   
  6. import android.app.Activity;  
  7. import android.os.Bundle;  
  8. import android.view.ContextMenu;  
  9. import android.view.MenuItem;  
  10. import android.view.View;  
  11. import android.view.ContextMenu.ContextMenuInfo;  
  12. import android.view.View.OnCreateContextMenuListener;  
  13. import android.widget.AdapterView;  
  14. import android.widget.ListView;  
  15. import android.widget.SimpleAdapter;  
  16. import android.widget.AdapterView.OnItemClickListener;  
  17.   
  18. public class TestListView extends Activity {  
  19.     @Override  
  20.     public void onCreate(Bundle savedInstanceState) {  
  21.         super.onCreate(savedInstanceState);  
  22.         setContentView(R.layout.main);  
  23.         //绑定Layout里面的ListView  
  24.         ListView list = (ListView) findViewById(R.id.ListView01);  
  25.           
  26.         //生成动态数组,加入数据  
  27.         ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();  
  28.         for(int i=0;i<10;i++)  
  29.         {  
  30.             HashMap<String, Object> map = new HashMap<String, Object>();  
  31.             map.put("ItemImage", R.drawable.checked);//图像资源的ID  
  32.             map.put("ItemTitle""Level "+i);  
  33.             map.put("ItemText""Finished in 1 Min 54 Secs, 70 Moves! ");  
  34.             listItem.add(map);  
  35.         }  
  36.         //生成适配器的Item和动态数组对应的元素  
  37.         SimpleAdapter listItemAdapter = new SimpleAdapter(this,listItem,//数据源   
  38.             R.layout.list_items,//ListItem的XML实现  
  39.             //动态数组与ImageItem对应的子项          
  40.             new String[] {"ItemImage","ItemTitle""ItemText"},   
  41.             //ImageItem的XML文件里面的一个ImageView,两个TextView ID  
  42.             new int[] {R.id.ItemImage,R.id.ItemTitle,R.id.ItemText}  
  43.         );  
  44.          
  45.         //添加并且显示  
  46.         list.setAdapter(listItemAdapter);  
  47.           
  48.         //添加点击  
  49.         list.setOnItemClickListener(new OnItemClickListener() {  
  50.   
  51.             @Override  
  52.             public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,  
  53.                     long arg3) {  
  54.                 setTitle("点击第"+arg2+"个项目");  
  55.             }  
  56.         });  
  57.           
  58.       //添加长按点击  
  59.         list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {  
  60.               
  61.             @Override  
  62.             public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {  
  63.                 menu.setHeaderTitle("长按菜单-ContextMenu");     
  64.                 menu.add(000"弹出长按菜单0");  
  65.                 menu.add(010"弹出长按菜单1");     
  66.             }  
  67.         });   
  68.     }  
  69.       
  70.     //长按菜单响应函数  
  71.     @Override  
  72.     public boolean onContextItemSelected(MenuItem item) {  
  73.         setTitle("点击了长按菜单里面的第"+item.getItemId()+"个项目");   
  74.         return super.onContextItemSelected(item);  
  75.     }  
  76. }  
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 合伙生意转让意见不合怎么办 租完房子后悔了怎么办 通过中介买房产生纠纷怎么办 天津公租房资格证到期怎么办 买大房子后悔了怎么办 公款私存了该怎么办 外地人怎么办身份证在北京东城区 申请公租房有车怎么办 租了公租房辞职怎么办 申请公租房收入明细没有怎么办 杭州公租房满3年怎么办 小学寄读不转学籍手续怎么办 炸东西的油糊了怎么办 赠送面积为违建怎么办 执法不管违建我怎么办 司法考试毕业院校写错了怎么办 家具店西安一直拖着不交货怎么办 派出所私自迁移了我家户口怎么办? 退房子不退押金怎么办 租房子中介不退押金怎么办 租房子押金不退怎么办 外地人签户口到武汉怎么办 开发商不给办土地证怎么办 房间里的油烟味怎么办 现金借款app还不了款怎么办 学校不允许实习生自己租房怎么办 盯盯拍开不了机怎么办 向私人借钱不还怎么办 微信好友借钱不还怎么办 支付宝借不了钱怎么办 支付宝借条关了怎么办 qq群不小心解散了怎么办 qq群解散了照片怎么办 出租屋没窗户很闷怎么办 二手房交税后房主不卖怎么办 二房东收不到租拖欠房租怎么办 房东不给换门锁怎么办 租房到期房东联系不到租客怎么办 廉租房名下有车怎么办 路边停车收忘记交费怎么办 考编忘记交费了怎么办