ListView 是列表组件,是Android中很常用的组件,列表显示信息由以下3个部分组成:
1、ListView组件
2、适配器,用来将数据映射到ListView组件中。
3、列表中要显示的数据
以下是几种适配器:
(1) ---ArrayAdapter---只显示一行文字
(2)---SimpleAdapter---自定义每行的数据显示形式
(3) ---SimpleCoursorAdapter---把数据库中的内容以列表的方式显示出来
一、ArrayAdapter
MainActivity.java代码如下:
1 packagecom.example.lenovo.a1107;2
3 importandroid.support.v7.app.AppCompatActivity;4 importandroid.os.Bundle;5 importandroid.view.Menu;6 importandroid.view.MenuItem;7 importandroid.widget.ArrayAdapter;8 importandroid.widget.LinearLayout;9 importandroid.widget.ListView;10
11 importjava.util.ArrayList;12 importjava.util.List;13
14 public class MainActivity extendsAppCompatActivity {15
16 privateLinearLayout myLayout;17 privateListView myListView;18 @Override19 protected voidonCreate(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 adpater=new ArrayAdapter(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 ListgetMyData(){37 List myList=new ArrayList();//创建List对象,并向其中添加数据
38 myList.add("数据项1");39 myList.add("数据项2");40 myList.add("数据项3");41 myList.add("数据项4");42 returnmyList;43
44 }45
46 }
View Code
.xml代码如下:
1
3 android:id="@+id/myLayout"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent"
6 android:orientation="vertical"
7 >
8
9
2、SimpleAdapter
创建SimpleAdapter对象时,有5个参数,
第一个:上下文。
第二个:一个list类的集合,该集合是Map类型
第三个:每一行的布局资源文件(listviewrow)(可自定义)。
第四个:HashMap中的key值。
第五个:下面是listviewroe.xml里的组件id。
lisviewExample.java代码如下:
1 packagecom.example.lenovo.a1107;2
3 importandroid.app.Activity;4 importandroid.graphics.Color;5 importandroid.os.Bundle;6 importandroid.view.View;7 importandroid.widget.AdapterView;8 importandroid.widget.LinearLayout;9 importandroid.widget.ListView;10 importandroid.widget.SimpleAdapter;11 importandroid.widget.Toast;12
13 importjava.util.ArrayList;14 importjava.util.HashMap;15 importjava.util.List;16 importjava.util.Map;17
18 /**
19 * Created by Lenovo on 2015/11/7.20 */
21 public class ListViewExample extendsActivity {22 privateLinearLayout myLayout;23 privateListView myListView;24
25 List>list=new ArrayList>();26 //创建List对象,用来存放列表每一行的Map信息
27
28 @Override29 protected voidonCreate(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=newLinearLayout.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(newAdapterView.OnItemClickListener() {53 @Override54 public void onItemClick(AdapterView> parent, View view, int position, longid) {55 Toast.makeText(ListViewExample.this,"您选择的是"+list.get(position).get("name").56 toString(), Toast.LENGTH_SHORT).show();57 }58 }); //列表的单击事件
59
60 }61 public List>getTripListData(){62 Map map=new HashMap();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();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 returnlist;80 }81 }
View Code
layout/main.xml文件
1
3 android:id="@+id/myLayout"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent"
6 android:orientation="vertical"
7 >
8
9
layout/listViewrow.xml代码:
1 <?xml version="1.0" encoding="utf-8"?>
2
4 android:orientation="horizontal"
5 android:layout_width="fill_parent"
6 android:layout_height="match_parent">
7
8
10 android:layout_width="110dp"
11 android:layout_height="120dp"
12 android:layout_margin="10dp"
13 />
14
16 android:layout_width="wrap_content"
17 android:layout_height="wrap_content"
18 android:layout_marginTop="10dp"
19 >
20
22 android:layout_width="wrap_content"
23 android:layout_height="wrap_content"
24 android:textColor="#ff0000"
25 />
26
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
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
43
44
View Code
3、SimpleCursorAdapter
它允许绑定一个游标的列到ListView上,并可以使用自定义的layout显示每个项目
SimpleCursorAdapterExample.java代码如下:
1 packagecom.example.lenovo.a1107;2
3
4 importandroid.app.Activity;5 importandroid.database.Cursor;6 importandroid.os.Bundle;7 importandroid.provider.Contacts;8 importandroid.widget.LinearLayout;9 importandroid.widget.ListAdapter;10 importandroid.widget.ListView;11 importandroid.widget.SimpleCursorAdapter;12
13 public class SimpleCursorAdapterExample extendsActivity {14 privateListView myListView;15 privateLinearLayout myLayout;16
17 @Override18 protected voidonCreate(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 }
View Code
main.xml布局文件与上一个一样~~
别忘记在注册访问手机联系人的权限。