AndroidUI系統之 ListView篇

來源:互聯網
上載者:User

AndroidUI系統之 ListView篇

1.建立一個項目:ListViewLearn

2.修改MainActivity,繼承於ListActivity

3.建立一個String數組,用來儲存ListView中的現實內容

  1. package com.learn.listviewlearn.utility; 
  2.  
  3. public class Util { 
  4.     public static final String[] COUNTRYS = { "中國", "美國", "俄羅斯", "英國", "法國" }; 
  5. } 

4.修改onCreate方法,設定一個Adapter,數組中的內容在ListView中現實出來

  1. @Override 
  2.   protected void onCreate(Bundle savedInstanceState) { 
  3.       super.onCreate(savedInstanceState); 
  4.       // setContentView(R.layout.activity_main); 
  5.       this.setListAdapter(new ArrayAdapter<String>(this, 
  6.               android.R.layout.simple_dropdown_item_1line, Util.COUNTRYS)); 
  7.   }

二、使用XML布局檔案來定義ListView的樣式

1.修改activity_main.xml檔案,添加一個ListView,id必須為android:id="@android:id/list"

  1. LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  2.     android:layout_width="fill_parent" 
  3.     android:layout_height="fill_parent" 
  4.     android:orientation="vertical" > 
  5.  
  6.     <ListView 
  7.         android:id="@android:id/list" 
  8.         android:layout_width="fill_parent" 
  9.         android:layout_height="fill_parent" 
  10.         android:background="#FFFFFF00" > 
  11.     </ListView> 
  12.  
  13. </LinearLayout> 

2.修改OnCreate方法

  1. @Override 
  2.   protected void onCreate(Bundle savedInstanceState) { 
  3.       super.onCreate(savedInstanceState); 
  4.       setContentView(R.layout.activity_main); 
  5.       this.setListAdapter(new ArrayAdapter<String>(this, 
  6.               android.R.layout.simple_dropdown_item_1line, Util.COUNTRYS)); 
  7.   }

三、使用XML布局檔案來定義ListViewItem的樣式

1.首先建立一個list_view.xml的布局檔案

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:layout_width="match_parent" 
  4.     android:layout_height="match_parent" 
  5.     android:orientation="horizontal" > 
  6.  
  7.     <ImageView 
  8.         android:id="@+id/imageViewIcon" 
  9.         android:layout_width="wrap_content" 
  10.         android:layout_height="wrap_content" 
  11.         android:contentDescription="@string/icon" > 
  12.     </ImageView> 
  13.  
  14.     <TextView 
  15.         android:id="@+id/textViewContent" 
  16.         android:layout_width="wrap_content" 
  17.         android:layout_height="wrap_content" > 
  18.     </TextView> 
  19.  
  20. </LinearLayout> 

2.然後建立一個Adapter繼承於BaseAdapter,主要修改getCount()和getView()方法

  1. package com.learn.listviewlearn.adapter; 
  2.  
  3. import com.learn.listviewlearn.R; 
  4. import com.learn.listviewlearn.utility.Util; 
  5.  
  6. import android.content.Context; 
  7. import android.view.LayoutInflater; 
  8. import android.view.View; 
  9. import android.view.ViewGroup; 
  10. import android.widget.BaseAdapter; 
  11. import android.widget.ImageView; 
  12. import android.widget.TextView; 
  13.  
  14. public class ListViewAdapter extends BaseAdapter { 
  15.     private Context context; 
  16.  
  17.     public ListViewAdapter() { 
  18.         // TODO Auto-generated constructor stub 
  19.     } 
  20.  
  21.     @Override 
  22.     public int getCount() { 
  23.         return Util.COUNTRYS.length; 
  24.     } 
  25.  
  26.     @Override 
  27.     public Object getItem(int position) { 
  28.         // TODO Auto-generated method stub 
  29.         return null; 
  30.     } 
  31.  
  32.     @Override 
  33.     public long getItemId(int position) { 
  34.         // TODO Auto-generated method stub 
  35.         return 0; 
  36.     } 
  37.  
  38.     @Override 
  39.     public View getView(int position, View convertView, ViewGroup parent) { 
  40.         if (convertView == null) { 
  41.             convertView = LayoutInflater.from(context).inflate(R.layout.list_item, null); 
  42.             ItemViewCache itemViewCache = new ItemViewCache(); 
  43.             itemViewCache.imageView = (ImageView)convertView.findViewById(R.id.imageViewIcon); 
  44.             itemViewCache.textView = (TextView)convertView.findViewById(R.id.textViewContent); 
  45.             convertView.setTag(itemViewCache); 
  46.         } 
  47.          
  48.         ItemViewCache cache = (ItemViewCache) convertView.getTag(); 
  49.  
  50.         cache.imageView.setImageResource(Util.images[position]); 
  51.         cache.textView.setText(Util.COUNTRYS[position]); 
  52.         return convertView; 
  53.     } 
  54.      
  55.     private static class ItemViewCache{ 
  56.         public TextView textView; 
  57.         public ImageView imageView; 
  58.     } 
  59.  
  60. } 

Util.java

  1. package com.learn.listviewlearn.utility; 
  2.  
  3. import com.learn.listviewlearn.R; 
  4.  
  5. public class Util { 
  6.     public static final String[] COUNTRYS = { "中國", "美國", "俄羅斯", "英國", "法國" }; 
  7.     public static final int[] images = { R.drawable.ic_launcher, 
  8.             R.drawable.ic_launcher, R.drawable.ic_launcher, 
  9.             R.drawable.ic_launcher, R.drawable.ic_launcher }; 
  10. }

四、為ListView添加Click事件。只需要在MainActivity中實現onListItemClick()方法

  1. @Override 
  2.     protected void onListItemClick(ListView l, View v, int position, long id) { 
  3.         Toast.makeText(this, "你選擇了" + Util.COUNTRYS[position], Toast.LENGTH_SHORT) 
  4.                 .show(); 
  5.     } 

本文連結:http://www.cnblogs.com/zhangtingkuo/archive/2014/08/01/3884689.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.