zoukankan      html  css  js  c++  java
  • android用户界面组件Widget列表视图ListView

    ListView是比较常用的控件

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

    列表的显示需要三个元素:

    1.ListVeiw 用来展示列表的View。

    2.适配器 用来把数据映射到ListView上的中介。

    3.数据    具体的将被映射的字符串,图片,或者基本组件。

    根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter

    SimpleAdapter的例子如下:

    首先在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>  
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 
    	android:id="@+id/LinearLayout01" 
    	android:layout_width="fill_parent" 
    	android:layout_height="fill_parent" 
    	xmlns:android="http://schemas.android.com/apk/res/android">
    <ListView android:layout_width="wrap_content" 
              android:layout_height="wrap_content" 
              android:id="@+id/ListView01"
              />
    </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>  
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout 
    	android:id="@+id/RelativeLayout01" 
    	android:layout_width="fill_parent" 
    	xmlns:android="http://schemas.android.com/apk/res/android" 
    	android:layout_height="wrap_content" 
    	android:paddingBottom="4dip" 
    	android:paddingLeft="12dip"
    	android:paddingRight="12dip">
    <ImageView 
    	android:paddingTop="12dip"
    	android:layout_alignParentRight="true"
    	android:layout_width="wrap_content" 
    	android:layout_height="wrap_content" 
    	android:id="@+id/ItemImage"
    	/> 
    <TextView 
        android:text="TextView01" 
        android:layout_height="wrap_content" 
        android:textSize="20dip" 
        android:layout_width="fill_parent" 
        android:id="@+id/ItemTitle"
        />
    <TextView 
    	android:text="TextView02" 
    	android:layout_height="wrap_content" 
    	android:layout_width="fill_parent" 
    	android:layout_below="@+id/ItemTitle" 
    	android:id="@+id/ItemText"
    	/>
    </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. }  
  • 相关阅读:
    C语言中const关键字的用法
    LDO和DC-DC的概念,区别及优缺点
    Ubuntu下几个命令行方式使用的图片浏览工具
    I2C和I2S的区别和使用方法
    scikit-image 图像处理库介绍
    USB协议介绍
    Ubuntu 16.04 python和OpenCV安装
    一种基于python的人脸识别开源系统
    numpy 介绍
    python enumerate用法总结
  • 原文地址:https://www.cnblogs.com/linzheng/p/1938757.html
Copyright © 2011-2022 走看看