Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android開發之ListView、GridView 實例

Android開發之ListView、GridView 實例

編輯:Android開發實例

       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, null, null, null, null);      
  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), null, null);      
  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, 0, 0);      
  56.                 toast.show();      
  57.             }      
  58.                   
  59.         });      
  60.               
  61.     }      
  62. }  

Android開發之ListView、GridView 實例

Android開發之ListView、GridView 實例

       看了這兩個Android開發實例,相信大家對ListView、GridView的使用有了一定掌握了。大家還可以使用它們和Adapter實現更多的功能試試。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved