列表視圖(ListView)以垂直的形式列出需要顯示的列表項。
實現過程:新建適配器->添加數據源到適配器->視圖加載適配器
在安卓中,有兩種方法可以在屏幕中添加列表視圖
1、直接用ListView組件創建
2、讓Activity繼承ListActivity實現
一、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="vertical" > 6 7 <ListView 8 android:id="@+id/listView1" 9 android:entries="@array/list" 10 //在res/layout 的string.xml中添加數組資源的名稱 11 android:layout_width="match_parent" 12 android:layout_height="wrap_content" > 13 </ListView> 14 15 </LinearLayout> 16
相應的res/layout 中 數組資源
1 <resources> 2 3 <string name="app_name">xqx_lianxi</string> 4 <string-array name = "list"> /數組資源名稱為list 與layout中對應 5 <item>山東大學</item> 6 <item>山東科技大學</item> 7 <item>山東理工大學</item> 8 <item>山東建築大學</item> 9 <item>山東農業大學</item> 10 <item>濟南大學</item> 11 <item>煙台大學</item> 12 <item>魯東大學</item> 13 <item>臨沂大學</item> 14 <item>聊城大學</item> 15 </string-array> 16 </resources>
java代碼
1 package xqx; 2 3 import com.example.xqx_lianxi.R; 4 5 import android.app.Activity; 6 import android.os.Bundle; 7 import android.view.View; 8 import android.widget.AdapterView; 9 import android.widget.Toast; 10 import android.widget.AdapterView.OnItemClickListener; 11 import android.widget.ListView; 12 13 public class List_lianxi extends Activity{ 14 ListView list; 15 @Override 16 protected void onCreate(Bundle savedInstanceState) { 17 // TODO Auto-generated method stub 18 super.onCreate(savedInstanceState); 19 setContentView(R.layout.list_lianxi); 20 21 list = (ListView) findViewById(R.id.listView1); 22 23 //為列表視圖中選中的項添加響應事件 24 list.setOnItemClickListener(new OnItemClickListener() { 25 26 @Override 27 public void onItemClick(AdapterView<?> parent, View arg1, int pos, 28 long id) { 29 // TODO Auto-generated method stub 30 String result = parent.getItemAtPosition(pos).toString(); //獲取選擇項的值 31 Toast.makeText(List_lianxi.this, "點擊了 "+result, Toast.LENGTH_SHORT).show();//輸出選中項消息 32 } 33 }); 34 } 35 36 }
效果圖:
二、java代碼動態創建列表
1、布局文件
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="vertical" > 6 7 <ListView 8 android:id="@+id/id_listview" 9 android:layout_width="match_parent" 10 android:layout_height="wrap_content" > //這里就不用指定數據源了 11 </ListView> 12 13 </LinearLayout>
2、Acitivity代碼
1 package price_ui; 2 3 import com.example.allcode.R; 4 5 import android.app.Activity; 6 import android.os.Bundle; 7 import android.view.View; 8 import android.widget.AdapterView; 9 import android.widget.AdapterView.OnItemClickListener; 10 import android.widget.ArrayAdapter; 11 import android.widget.ListView; 12 import android.widget.SimpleAdapter; 13 import android.widget.Toast; 14 15 public class ListView_test extends Activity{ 16 private ListView list; 17 private ArrayAdapter<String> arrayadapter; 18 private SimpleAdapter simpleadapter; 19 20 @Override 21 protected void onCreate(Bundle savedInstanceState) { 22 // TODO Auto-generated method stub 23 super.onCreate(savedInstanceState); 24 setContentView(R.layout.listview_text); 25 26 list = (ListView) findViewById(R.id.id_listview); 27 String schools[] = {"山東大學","山東理工大學","山東科技大學","山東農業大學"}; 28 //新建適配器,適配器加載數據源 29 //第一個參數:上下文 30 //第二個參數:當前列表項加載的布局文件 31 //第三個參數:數據源 32 33 arrayadapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, schools); 34 35 //ListView視圖加載適配器 36 list.setAdapter(arrayadapter); 37 38 //為列表視圖中選中的項添加響應事件 39 list.setOnItemClickListener(new OnItemClickListener() { 40 41 42 43 @Override 44 public void onItemClick(AdapterView<?> parent, View arg1, int pos, 45 long id) { 46 // TODO Auto-generated method stub 47 String result = parent.getItemAtPosition(pos).toString(); //獲取選擇項的值 48 Toast.makeText(ListView_test.this, "點擊了 "+result, Toast.LENGTH_SHORT).show();//輸出選中項消息 49 } 50 }); 51 } 52 53 }