Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> android listview組件之ArrayAdapter,SimpleAdapter

android listview組件之ArrayAdapter,SimpleAdapter

編輯:Android開發實例

     ListView 是android開發中最常用的組件之一,它通過一個adapter來構建顯示通常有三種adapter可以使用ArrayAdapter ,SimpleAdapter,CursorAdapter。CursorAdapter主要正對數據庫使用,下面通過例子介紹ArrayAdapter ,SimpleAdapter的簡單使用:
   1:ArrayAdapter 它接受一個數組或者List作為參數來構建。
      一下通過簡單例子說明:
  創建Test 繼承ListActivity 這裡我們傳入一個string數組

  1. public class ListTest extends ListActivity {  
  2.     /** *//** Called when the activity is first created. */ 
  3.  
  4.     @Override 
  5.     public void onCreate(Bundle savedInstanceState) {  
  6.         super.onCreate(savedInstanceState);  
  7.         String[] sw = new String[100];  
  8.         for (int i = 0; i < 100; i++) {  
  9.             sw[i] = "listtest_" + i;  
  10.         }  
  11.         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,sw);//使用系統已經實現好的xml文件simple_list_item_1  
  12.         setListAdapter(adapter);  
  13.     }  

運行如圖:

 從以上代碼可以看不我們不需要加載我們自己的layout 而是用系統已經實現的layout很快速的實現了listview

第二種SimpleAdapter:
 先看下我們例子的最終截圖:
 
 

通過上圖可以看出listview每行不僅僅是一個string 包括了很多項,圖片,多項文字
我們通過構建list,並設置每項為一個map來實現:
代碼:創建TestList類繼承Activity

  1. super.onCreate(savedInstanceState);  
  2.         setContentView(R.layout.main);  
  3.         ArrayList<HashMap<String, Object>> users = new ArrayList<HashMap<String, Object>>();  
  4.         for (int i = 0; i < 10; i++) {  
  5.             HashMap<String, Object> user = new HashMap<String, Object>();  
  6.             user.put("img", R.drawable.user);  
  7.             user.put("username", "姓名(" + i+")");  
  8.             user.put("age", (20 + i) + "");  
  9.             users.add(user);  
  10.         }  
  11.         SimpleAdapter saImageItems = new SimpleAdapter(this,  
  12.                 users,// 數據來源  
  13.                 R.layout.user,//每一個user xml 相當ListView的一個組件   
  14.                 new String[] { "img", "username", "age" },  
  15.                 // 分別對應view 的id  
  16.                 new int[] { R.id.img, R.id.name, R.id.age });  
  17.         // 獲取listview  
  18.         ((ListView) findViewById(R.id.users)).setAdapter(saImageItems); 

下面是main.xml的內容:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:orientation="vertical" android:layout_width="fill_parent" 
  4.     android:layout_height="fill_parent"> 
  5.     <TextView android:text="用戶列表" android:gravity="center" 
  6.         android:layout_height="wrap_content" 
  7.         android:layout_width="fill_parent" android:background="#DAA520" 
  8.         android:textColor="#000000"> 
  9.     </TextView> 
  10.     <LinearLayout   
  11.         android:layout_width="wrap_content" 
  12.         android:layout_height="wrap_content"> 
  13.         <TextView android:text="姓名"   
  14.             android:gravity="center" android:layout_width="160px" 
  15.             android:layout_height="wrap_content" android:textStyle="bold" 
  16.             android:background="#7CFC00"> 
  17.         </TextView> 
  18.         <TextView android:text="年齡"   
  19.             android:layout_width="170px" android:gravity="center" 
  20.             android:layout_height="wrap_content" android:textStyle="bold" 
  21.             android:background="#F0E68C"> 
  22.         </TextView> 
  23.     </LinearLayout> 
  24. <ListView android:layout_width="wrap_content"   
  25.         android:layout_height="wrap_content" android:id="@+id/users"> 
  26.     </ListView> 
  27. </LinearLayout> 

之中listView前面的可以說是標題行,listview相當於用來顯示數據的容器,裡面每行是一個用戶信息,而用戶信息是樣子呢?

 看看use.xml

  1. <?xml version="1.0" encoding="utf-8"?>    
  2. <TableLayout      
  3.          android:layout_width="fill_parent"      
  4.          xmlns:android="http://schemas.android.com/apk/res/android"      
  5.          android:layout_height="wrap_content"      
  6.          >   
  7.          <TableRow >   
  8.          <ImageView      
  9.                android:layout_width="wrap_content"      
  10.                android:layout_height="wrap_content"     
  11.                android:id="@+id/img">      
  12.          </ImageView>    
  13.          <TextView      
  14.                android:layout_height="wrap_content"      
  15.                android:layout_width="150px"      
  16.                android:id="@+id/name">    
  17.          </TextView>    
  18.          <TextView      
  19.                android:layout_height="wrap_content"     
  20.                android:layout_width="170px"      
  21.                android:id="@+id/age">    
  22.          </TextView>   
  23.          </TableRow>   
  24. </TableLayout>   

也就是說每行包含了一個img 和2個文字信息
這個文件以參數的形式通過adapter在listview中顯示。
也就是:
 

  1. SimpleAdapter saImageItems = new SimpleAdapter(this,  
  2.                 users,// 數據來源  
  3.                 R.layout.user,//每一個user xml 相當ListView的一個組件   
  4.                 new String[] { "img", "username", "age" },  
  5.  
  6.                 // 分別對應view 的id  
  7.                 new int[] { R.id.img, R.id.name, R.id.age }); 

 

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