ListView与GridView是Android开发中的常用控件,它们和Adapter配合使用能够实现很多界面效果。下面分别以实例说明ListView、GridView的用法。

       1.ListView的Android开发实例

       ListView 是android开发中最常用的控件之一,一般构成列表包括三个元素,ListView:用来展示列表的视图、Adapter:数据与视图连接的桥梁、Data:具体的数据包括字符串 、图片或者控件。

       适配器一般有以下几种类型:

       ArrayAdapter:Android中最简单的一种适配器,专门用于列表控件。只显示一行数据。

       SimpleAdapter:此适配器有最好的扩充性,可以自定义出各种效果。经常使用静态数据填充列表。

       CursorAdapter:通过游标向列表提供数据。

       ResourceCursorAdapter:这个适配器扩展了CursorAdapter,知道如何从资源创建视图。

       SimpleCursorAdapter:这个适配器扩展了ResourceCursorAdapter,从游标中得列创建 TextView/ImageView视图。下面获取通讯录的示例:

XML/HTML代码
  1. <?xml version="1.0" encoding="utf-8"?>     
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     
  3.     android:orientation="vertical"     
  4.     android:layout_width="fill_parent"     
  5.     android:layout_height="fill_parent"     
  6.     android:background="@drawable/bg"     
  7.          
  8.     >     
  9.     <ListView       
  10.     android:id="@+id/contacts_list"     
  11.     android:layout_width="fill_parent"     
  12.     android:layout_height="fill_parent"     
  13.     >     
  14.     </ListView>     
  15. </LinearLayout>
Java代码
  1. package net.csdn.blog.androidtoast;      
  2.      
  3. import java.util.ArrayList;      
  4. import java.util.HashMap;      
  5. import java.util.Map;      
  6.      
  7. import android.app.Activity;      
  8. import android.database.Cursor;      
  9. import android.os.Bundle;      
  10. import android.provider.ContactsContract;      
  11. import android.view.View;      
  12. import android.widget.AdapterView;      
  13. import android.widget.ListAdapter;      
  14. import android.widget.ListView;      
  15. import android.widget.SimpleAdapter;      
  16. import android.widget.Toast;      
  17.      
  18. public class MainActivity extends Activity {      
  19.           
  20.      ListView     mListView;      
  21.      ArrayList<Map<String, String>> listData;      
  22.                
  23.     static final String NAME = "name";      
  24.     static final String NUMBER = "number";      
  25.     /** Called when the activity is first created. */     
  26.     @Override     
  27.     public void onCreate(Bundle savedInstanceState) {      
  28.         super.onCreate(savedInstanceState);      
  29.         setContentView(R.layout.main);      
  30.         getContacts();      
  31.     }      
  32.      
  33.     /**    
  34.      * 获取联系人列表    
  35.      */     
  36.     private void getContacts() {      
  37.         mListView=(ListView) findViewById(R.id.contacts_list);      
  38.         listData = new ArrayList<Map<String, String>>();      
  39.         //获取数据库Cursor      
  40.         Cursor cur=getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, nullnullnullnull);      
  41.         startManagingCursor(cur);      
  42.         while (cur.moveToNext()) {      
  43.           Map<String, String> mp = new HashMap<String, String>();      
  44.           long id = cur.getLong(cur.getColumnIndex("_id"));      
  45.           Cursor pcur = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,      
  46.                   null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + Long.toString(id), nullnull);      
  47.                         
  48.           // 处理多个号码的情况      
  49.           String phoneNumbers = "";      
  50.           while (pcur.moveToNext()) {      
  51.                 String strPhoneNumber = pcur.getString(pcur.getColumnIndex(      
  52.                      ContactsContract.CommonDataKinds.Phone.NUMBER));      
  53.                      phoneNumbers += strPhoneNumber + ":";      
  54.           }      
  55.                 phoneNumbers += "\n";      
  56.                 pcur.close();      
  57.                              
  58.                 String name = cur.getString(cur.getColumnIndex("display_name"));      
  59.                 mp.put(NAME, name);      
  60.                 mp.put(NUMBER, phoneNumbers);      
  61.                 listData.add(mp);      
  62.         }      
  63.         cur.close();      
  64.                
  65.         // 建立一个适配器去查询数据      
  66.         ListAdapter adapter = new SimpleAdapter(this, listData, android.R.layout.simple_list_item_2,      
  67.                new String[]{NAME, NUMBER},      
  68.                new int[] {android.R.id.text1, android.R.id.text2});      
  69.         mListView.setAdapter(adapter);      
  70.         //为listView添加事件监听      
  71.         mListView.setOnItemSelectedListener(new ListView.OnItemSelectedListener(){      
  72.             @Override     
  73.             public void onItemSelected(AdapterView<?> parent, View view,      
  74.                     int position, long id) {      
  75.                 Toast.makeText(getApplicationContext(), "当前所在行为:"+Long.toString(parent.getSelectedItemId()+1), 1).show();      
  76.             }      
  77.      
  78.             @Override     
  79.             public void onNothingSelected(AdapterView<?> parent) {      
  80.                 // TODO Auto-generated method stub      
  81.                       
  82.             }      
  83.                   
  84.         });      
  85.     }      
  86. }    

Android开发之ListView、GridView 实例

       2.GridView的Android开发实例

       GridView 网格视图,用于显示多行多列。直接上示例:

XML/HTML代码
  1. <?xml version="1.0" encoding="utf-8"?>     
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     
  3.     android:orientation="vertical"     
  4.     android:layout_width="fill_parent"     
  5.     android:layout_height="fill_parent"     
  6.     android:background="@drawable/bg"     
  7.     >     
  8.     <GridView     
  9.         android:id="@+id/gridview"     
  10.         android:layout_width="fill_parent"     
  11.         android:layout_height="wrap_content"     
  12.         android:numColumns="3"/>     
  13.               
  14. </LinearLayout>    
XML/HTML代码
  1. <?xml version="1.0" encoding="utf-8"?>     
  2.      
  3. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     
  4.     android:orientation="vertical" android:layout_width="fill_parent"     
  5.     android:layout_height="fill_parent" android:scrollbars="vertical">     
  6.      <ImageView         
  7.                android:layout_height="100dip"         
  8.                android:id="@+id/ItemImage"         
  9.                android:layout_width="80dip"       
  10.                android:src="@drawable/png1"       
  11.                android:layout_gravity="center_horizontal"/>       
  12.                        
  13.          <TextView         
  14.                android:layout_width="wrap_content"         
  15.                android:layout_height="wrap_content"       
  16.                android:layout_gravity="center"        
  17.                android:id="@+id/ItemText" />        
  18. </LinearLayout>   
Java代码
  1. package net.csdn.blog.androidtoast;      
  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.Gravity;      
  9. import android.view.View;      
  10. import android.widget.AdapterView;      
  11. import android.widget.GridView;      
  12. import android.widget.SimpleAdapter;      
  13. import android.widget.Toast;      
  14.      
  15. public class MainActivity extends Activity {      
  16.     /** Called when the activity is first created. */     
  17.     //定义图片整型数组      
  18.     private int[] mImages={      
  19.             R.drawable.png1,      
  20.             R.drawable.png2,      
  21.             R.drawable.png3,      
  22.             R.drawable.png4,      
  23.             R.drawable.png5,      
  24.             R.drawable.png6,      
  25.             R.drawable.png7,      
  26.             R.drawable.png8,      
  27.             R.drawable.png9      
  28.      
  29.     };      
  30.     @Override     
  31.     public void onCreate(Bundle savedInstanceState) {      
  32.         super.onCreate(savedInstanceState);      
  33.         setContentView(R.layout.main);      
  34.               
  35.         //实例化GridView      
  36.         GridView mGridView=(GridView) findViewById(R.id.gridview);      
  37.         // 生成动态数组,并且传入数据      
  38.         ArrayList<HashMap<String, Object>> lstImageItem = new ArrayList<HashMap<String, Object>>();      
  39.               
  40.         for (int i = 0; i < 9; i++) {      
  41.             HashMap<String, Object> map = new HashMap<String, Object>();      
  42.             map.put("ItemImage", mImages[i]);// 添加图像资源的ID      
  43.             map.put("ItemText""NO." + String.valueOf(i+1));// 按序号做ItemText      
  44.             lstImageItem.add(map);      
  45.         }      
  46.         //构建一个适配器      
  47.         SimpleAdapter simple = new SimpleAdapter(this, lstImageItem, R.layout.gridviewitem,      
  48.                 new String[] { "ItemImage""ItemText" }, new int[] {R.id.ItemImage, R.id.ItemText });      
  49.         mGridView.setAdapter(simple);      
  50.         //添加选择项监听事件      
  51.         mGridView.setOnItemClickListener(new GridView.OnItemClickListener(){   
  52.             @Override     
  53.             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {      
  54.                 Toast toast=Toast.makeText(getApplicationContext(), "你选择了"+(position+1)+"号图片"1);      
  55.                 toast.setGravity(Gravity.BOTTOM, 00);      
  56.                 toast.show();      
  57.             }      
  58.                   
  59.         });      
  60.               
  61.     }      
  62. }  

Android开发之ListView、GridView 实例

Android开发之ListView、GridView 实例

       看了这两个Android开发实例,相信大家对ListView、GridView的使用有了一定掌握了。大家还可以使用它们和Adapter实现更多的功能试试。

本文发布:Android开发网
本文地址:http://www.jizhuomi.com/android/example/38.html
2012年5月14日
发布:鸡啄米 分类:Android开发实例 浏览: 评论:1