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 }
View Code

 

.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 }
View Code

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>
View Code

 

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 }
View Code


main.xml布局文件与上一个一样~~

别忘记在注册访问手机联系人的权限。

 关于安卓的各种权限见此O(∩_∩)O~:http://bbs.51cto.com/thread-1096739-1.html
posted @ 2015-11-07 17:15  白一  阅读(343)  评论(1编辑  收藏  举报