列表视图(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 }