瘋狂

          STANDING ON THE SHOULDERS OF GIANTS
          posts - 481, comments - 486, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          android 學習之listview

          Posted on 2009-11-06 18:05 瘋狂 閱讀(3371) 評論(2)  編輯  收藏 所屬分類: android
            
             業余時間學學android,寫點例子分享下,問題仍然多多。

             ListView 是android開發中最常用的組件之一,它通過一個adapter來構建顯示通常有三種adapter可以使用ArrayAdapterSimpleAdapter,CursorAdapter。CursorAdapter主要正對數據庫使用,下面通過例子介紹ArrayAdapterSimpleAdapter的簡單使用:
             1:ArrayAdapter 它接受一個數組或者List作為參數來構建。
                一下通過簡單例子說明:
            創建Test 繼承ListActivity 這里我們傳入一個string數組
          public class ListTest extends ListActivity {
              
          /** Called when the activity is first created. */

              @Override
              
          public void onCreate(Bundle savedInstanceState) {
                  
          super.onCreate(savedInstanceState);
                  String[] sw 
          = new String[100];
                  
          for (int i = 0; i < 100; i++{
                      sw[i] 
          = "listtest_" + i;
                  }

                  ArrayAdapter
          <String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,sw);//使用系統已經實現好的xml文件simple_list_item_1
                  setListAdapter(adapter);
              }

          }
          運行如圖:

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

          第二種SimpleAdapter
           先看下我們例子的最終截圖:
           
            通過上圖可以看出listview每行不僅僅是一個string 包括了很多項,圖片,多項文字
          我們通過構建list,并設置每項為一個map來實現:
          代碼:創建TestList類繼承Activity
          super.onCreate(savedInstanceState);
                  setContentView(R.layout.main);
                  ArrayList
          <HashMap<String, Object>> users = new ArrayList<HashMap<String, Object>>();
                  
          for (int i = 0; i < 10; i++{
                      HashMap
          <String, Object> user = new HashMap<String, Object>();
                      user.put(
          "img", R.drawable.user);
                      user.put(
          "username""姓名(" + i+")");
                      user.put(
          "age", (20 + i) + "");
                      users.add(user);
                  }

                  SimpleAdapter saImageItems 
          = new SimpleAdapter(this,
                          users,
          // 數據來源
                          R.layout.user,//每一個user xml 相當ListView的一個組件 
                          new String[] "img""username""age" },
                          
          // 分別對應view 的id
                          new int[] { R.id.img, R.id.name, R.id.age });
                  
          // 獲取listview
                  ((ListView) findViewById(R.id.users)).setAdapter(saImageItems);
          下面是main.xml的內容:
          <?xml version="1.0" encoding="utf-8"?>
          <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation
          ="vertical" android:layout_width="fill_parent"
              android:layout_height
          ="fill_parent">
              
          <TextView android:text="用戶列表" android:gravity="center"
                  android:layout_height
          ="wrap_content"
                  android:layout_width
          ="fill_parent" android:background="#DAA520"
                  android:textColor
          ="#000000">
              
          </TextView>
              
          <LinearLayout 
                  android:layout_width
          ="wrap_content"
                  android:layout_height
          ="wrap_content">
                  
          <TextView android:text="姓名" 
                      android:gravity
          ="center" android:layout_width="160px"
                      android:layout_height
          ="wrap_content" android:textStyle="bold"
                      android:background
          ="#7CFC00">
                  
          </TextView>
                  
          <TextView android:text="年齡" 
                      android:layout_width
          ="170px" android:gravity="center"
                      android:layout_height
          ="wrap_content" android:textStyle="bold"
                      android:background
          ="#F0E68C">
                  
          </TextView>
              
          </LinearLayout>
          <ListView android:layout_width="wrap_content" 
                  android:layout_height
          ="wrap_content" android:id="@+id/users">
              
          </ListView>
          </LinearLayout>

          之中listView前面的可以說是標題行,listview相當于用來顯示數據的容器,里面每行是一個用戶信息,而用戶信息是樣子呢?
          看看use.xml
          <?xml version="1.0" encoding="utf-8"?>  
          <TableLayout    
                   android:layout_width
          ="fill_parent"    
                   xmlns:android
          ="http://schemas.android.com/apk/res/android"    
                   android:layout_height
          ="wrap_content"    
                   
          > 
                   
          <TableRow > 
                   
          <ImageView    
                         android:layout_width
          ="wrap_content"    
                         android:layout_height
          ="wrap_content"   
                         android:id
          ="@+id/img">    
                   
          </ImageView>  
                   
          <TextView    
                         android:layout_height
          ="wrap_content"    
                         android:layout_width
          ="150px"    
                         android:id
          ="@+id/name">  
                   
          </TextView>  
                   
          <TextView    
                         android:layout_height
          ="wrap_content"   
                         android:layout_width
          ="170px"    
                         android:id
          ="@+id/age">  
                   
          </TextView> 
                   
          </TableRow> 
          </TableLayout>  
          也就是說每行包含了一個img 和2個文字信息
          這個文件以參數的形式通過adapter在listview中顯示。
          也就是:
          SimpleAdapter saImageItems = new SimpleAdapter(this,
                          users,
          // 數據來源
                          R.layout.user,//每一個user xml 相當ListView的一個組件 
                          new String[] "img""username""age" },

                          
          // 分別對應view 的id
                          new int[] { R.id.img, R.id.name, R.id.age });

          end 針對CursorAdapter希望通過數據庫來試驗下,下次也寫個例子上來 希望有用 ,不對之處,歡迎拍磚!

          文件下載:/Files/freeman1984/my_list.rar

          評論

          # re: android 學習之listview   回復  更多評論   

          2009-11-06 18:10 by 咖啡妝
          有android高手,希望共同學習!

          # re: android 學習之listview   回復  更多評論   

          2009-11-06 20:24 by TiGERTiAN
          嘗試更進一步學習,寫一個自動加載list玩玩,這個在實際開發中還是比較常用得。
          主站蜘蛛池模板: 盐池县| 泰兴市| 会理县| 宜兰县| 巩留县| 南京市| 图木舒克市| 西充县| 乐东| 武陟县| 荆州市| 金沙县| 新野县| 炎陵县| 临颍县| 松江区| 长岛县| 扶余县| 富蕴县| 桃园县| 花垣县| 太谷县| 酒泉市| 中山市| 大港区| 平安县| 五河县| 那坡县| 同江市| 体育| 新干县| 绵竹市| 东乌珠穆沁旗| 会昌县| 易门县| 沙雅县| 华池县| 镇宁| 永宁县| 西贡区| 尖扎县|