ListView的使用
ListView 是列表组件,是Android中很常用的组件,列表显示信息由以下3个部分组成:
1、ListView组件
2、适配器,用来将数据映射到ListView组件中。
3、列表中要显示的数据
以下是几种适配器:
(1) ---ArrayAdapter---只显示一行文字 (2)---SimpleAdapter---自定义每行的数据显示形式 (3) ---SimpleCoursorAdapter---把数据库中的内容以列表的方式显示出来
一、ArrayAdapter
MainActivity.java代码如下:
1 package com.example.lenovo.a1107; 2 3 import android.support.v7.app.AppCompatActivity; 4 import android.os.Bundle; 5 import android.view.Menu; 6 import android.view.MenuItem; 7 import android.widget.ArrayAdapter; 8 import android.widget.LinearLayout; 9 import android.widget.ListView; 10 11 import java.util.ArrayList; 12 import java.util.List; 13 14 public class MainActivity extends AppCompatActivity { 15 16 private LinearLayout myLayout; 17 private ListView myListView; 18 @Override 19 protected void onCreate(Bundle savedInstanceState) { 20 super.onCreate(savedInstanceState); 21 setContentView(R.layout.activity_main); 22 myLayout=(LinearLayout)findViewById(R.id.myLayout); 23 24 myListView=new ListView(this); 25 26 //创建ArrayAdapter适配器。构造函数中的第一个参数:Context,第二个:每一行的布局资源文件 27 // 第三个:数据源,一个List集合 28 ArrayAdapter<String> adpater=new ArrayAdapter<String>(this, 29 android.R.layout.simple_expandable_list_item_1,getMyData()); 30 31 myListView.setAdapter(adpater); 32 myLayout.addView(myListView); 33 34 } 35 36 public List<String>getMyData(){ 37 List<String> myList=new ArrayList<String>();//创建List对象,并向其中添加数据 38 myList.add("数据项1"); 39 myList.add("数据项2"); 40 myList.add("数据项3"); 41 myList.add("数据项4"); 42 return myList; 43 44 } 45 46 }
.xml代码如下:
1 <LinearLayout 2 xmlns:android="http://schemas.android.com/apk/res/android" 3 android:id="@+id/myLayout" 4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent" 6 android:orientation="vertical" 7 > 8 9 </LinearLayout>
2、SimpleAdapter
创建SimpleAdapter对象时,有5个参数,
第一个:上下文。
第二个:一个list类的集合,该集合是Map类型
第三个:每一行的布局资源文件(listviewrow)(可自定义)。
第四个:HashMap中的key值。
第五个:下面是listviewroe.xml里的组件id。
lisviewExample.java代码如下:
1 package com.example.lenovo.a1107; 2 3 import android.app.Activity; 4 import android.graphics.Color; 5 import android.os.Bundle; 6 import android.view.View; 7 import android.widget.AdapterView; 8 import android.widget.LinearLayout; 9 import android.widget.ListView; 10 import android.widget.SimpleAdapter; 11 import android.widget.Toast; 12 13 import java.util.ArrayList; 14 import java.util.HashMap; 15 import java.util.List; 16 import java.util.Map; 17 18 /** 19 * Created by Lenovo on 2015/11/7. 20 */ 21 public class ListViewExample extends Activity { 22 private LinearLayout myLayout; 23 private ListView myListView; 24 25 List<Map<String,Object>>list=new ArrayList<Map<String,Object>>(); 26 //创建List对象,用来存放列表每一行的Map信息 27 28 @Override 29 protected void onCreate(Bundle savedInstanceState) { 30 super.onCreate(savedInstanceState); 31 setContentView(R.layout.activity_main); 32 myLayout=(LinearLayout)findViewById(R.id.myLayout); 33 //获取LinearLayout对象 34 myListView=new ListView(this); 35 36 //创建布局参数 37 LinearLayout.LayoutParams tripListViewParam=new LinearLayout. 38 LayoutParams( 39 LinearLayout.LayoutParams.FILL_PARENT, 40 LinearLayout.LayoutParams.FILL_PARENT); 41 42 myListView.setCacheColorHint(Color.GRAY);//当拖拽列表时,显示的颜色 43 myLayout.addView(myListView, tripListViewParam);//将列表tripListView添加到布局myListView中 44 45 SimpleAdapter adapter=new SimpleAdapter(this,getTripListData(),R.layout.listviewrow, 46 new String[]{"img","name","money","zhe"},new int[]{R.id.tripImg, 47 R.id.phoneName, R.id.phoneMoney,R.id.phoneDiscount}); 48 //构建SimpleAdapter对象,5个参数 49 50 myListView.setAdapter(adapter);//为列表添加适配器 51 52 myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 53 @Override 54 public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 55 Toast.makeText(ListViewExample.this,"您选择的是"+list.get(position).get("name"). 56 toString(), Toast.LENGTH_SHORT).show(); 57 } 58 }); //列表的单击事件 59 60 } 61 public List<Map<String,Object>>getTripListData(){ 62 Map<String,Object> map=new HashMap<String,Object>(); 63 map.put("img",R.drawable.pic1); 64 map.put("name","iphone6s 16G"); 65 map.put("money","4600元"); 66 map.put("zhe","8.8折"); 67 list.add(map); 68 map.put("img",R.drawable.pic2); 69 map.put("name","iphone6 plus 16G"); 70 map.put("money","5600元"); 71 map.put("zhe", "9.0折"); 72 list.add(map); 73 map=new HashMap<String,Object>(); 74 map.put("img",R.drawable.pic3); 75 map.put("name","SAMSUNG 16G"); 76 map.put("money","3600元"); 77 map.put("zhe", "8.5折"); 78 list.add(map); 79 return list; 80 } 81 }
layout/main.xml文件
1 <LinearLayout 2 xmlns:android="http://schemas.android.com/apk/res/android" 3 android:id="@+id/myLayout" 4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent" 6 android:orientation="vertical" 7 > 8 9 </LinearLayout>
layout/listViewrow.xml代码:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:orientation="horizontal" 5 android:layout_width="fill_parent" 6 android:layout_height="match_parent"> 7 8 <ImageView 9 android:id="@+id/tripImg" 10 android:layout_width="110dp" 11 android:layout_height="120dp" 12 android:layout_margin="10dp" 13 /> 14 <LinearLayout 15 android:orientation="vertical" 16 android:layout_width="wrap_content" 17 android:layout_height="wrap_content" 18 android:layout_marginTop="10dp" 19 > 20 <TextView 21 android:id="@+id/phoneName" 22 android:layout_width="wrap_content" 23 android:layout_height="wrap_content" 24 android:textColor="#ff0000" 25 /> 26 <TextView 27 android:id="@+id/phoneMoney" 28 android:layout_width="wrap_content" 29 android:layout_height="wrap_content" 30 android:textColor="#ff000000" 31 android:layout_marginTop="5dp" 32 android:layout_marginRight="25dp" 33 /> 34 <TextView 35 android:id="@+id/phoneDiscount" 36 android:layout_width="wrap_content" 37 android:layout_height="wrap_content" 38 android:textColor="#ff1010" 39 android:layout_marginTop="5dp" 40 android:layout_marginRight="25dp" 41 /> 42 </LinearLayout> 43 44 </LinearLayout>
3、SimpleCursorAdapter
它允许绑定一个游标的列到ListView上,并可以使用自定义的layout显示每个项目
SimpleCursorAdapterExample.java代码如下:
1 package com.example.lenovo.a1107; 2 3 4 import android.app.Activity; 5 import android.database.Cursor; 6 import android.os.Bundle; 7 import android.provider.Contacts; 8 import android.widget.LinearLayout; 9 import android.widget.ListAdapter; 10 import android.widget.ListView; 11 import android.widget.SimpleCursorAdapter; 12 13 public class SimpleCursorAdapterExample extends Activity { 14 private ListView myListView; 15 private LinearLayout myLayout; 16 17 @Override 18 protected void onCreate(Bundle savedInstanceState) { 19 super.onCreate(savedInstanceState); 20 setContentView(R.layout.activity_main); 21 myLayout = (LinearLayout) findViewById(R.id.myLayout); 22 23 myListView = new ListView(this); 24 25 Cursor cursor = getContentResolver().query(Contacts.People.CONTENT_URI,null, 26 null,null,null); 27 startManagingCursor(cursor); 28 ListAdapter listAdapter = new SimpleCursorAdapter(this, 29 android.R.layout.simple_expandable_list_item_1,cursor, 30 new String[]{Contacts.People.NAME}, new int[]{android.R.id.text1}); 31 32 myListView.setAdapter(listAdapter); 33 myLayout.addView(myListView); 34 } 35 }
main.xml布局文件与上一个一样~~
别忘记在注册访问手机联系人的权限。
关于安卓的各种权限见此O(∩_∩)O~:http://bbs.51cto.com/thread-1096739-1.html
------------------------
没有谁的人生不是斩棘前行
----------------------------------------
JM