zoukankan      html  css  js  c++  java
  • ListView的用法

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

      

  • 相关阅读:
    PHP的五大运行模式
    PHP设计模式-工厂模式
    php+redis实现消息队列
    面试题一
    Linux常用命令
    实现session在多台服务器上共享
    Memcache和redis的区别
    PHP设计模式-建造者模式
    FASTCgi和PHP-fpm关系
    安装vm虚拟机
  • 原文地址:https://www.cnblogs.com/lechance/p/4373338.html
Copyright © 2011-2022 走看看