Android学习之——ListView

 背景知识  

      ListView在Android应用中使用非常广泛,手机上必备的微博、网易新闻等,都使用了ListView。

                            

定义

ListView是一个展示可滚动项的列表的视图集合(View Group)。通过适配器(Adapter)从内容源(例如一个数组或数据库查询)取得内容

然后将每个项转化为呈现在列表中的View,列表项自动地被插入到列表中。

                 

Demo

ListView的实现过程:

            准备数据---->使用动态数组保存数据----->构建Adapter(适配器)----->添加Adapter到listView上,并显示

 

 MainActivity代码

 1 package com.johntsai.listviewdemo;
 2 
 3 import java.util.ArrayList;
 4 import java.util.HashMap;
 5 import java.util.List;
 6 import java.util.Map;
 7 
 8 import android.app.Activity;
 9 import android.os.Bundle;
10 import android.view.View;
11 import android.widget.AdapterView;
12 import android.widget.AdapterView.OnItemClickListener;
13 import android.widget.ListView;
14 import android.widget.SimpleAdapter;
15 import android.widget.Toast;
16 
17 public class MainActivity extends Activity {
18     private ListView listView;
19     private SimpleAdapter adapter;
20     //准备数据
21     private String[] listTitle = {
22             "2015年春运火车票今起发售",
23             "马尔代夫遭淡水危机 中国送水",
24             "中国5架战机飞跃日本宫古海峡"
25     };
26     private String[] listContent = {
27             "可用网络、电话购票,3个时段可尝试\"捡漏\"",
28             "淡水生产装置受损,淡水供应告急,15万居民面临水荒",
29             "于6日飞跃宫古海峡,赴西太平洋训练"
30     };
31     private List<Map<String,Object>> listItems;
32     //保存数据
33     private void getData(){
34         listItems = new
35                 ArrayList<Map<String,Object>>();
36         for(int i = 0 ; i < listTitle.length; i++){
37             Map<String,Object> listItem =
38                     new HashMap<String, Object>();
39             listItem.put("image",R.drawable.ic_launcher);
40             listItem.put("title", listTitle[i]);
41             listItem.put("content", listContent[i]);
42             listItems.add(listItem);
43         }
44     }
45     @Override
46     protected void onCreate(Bundle savedInstanceState) {
47         super.onCreate(savedInstanceState);
48         setContentView(R.layout.activity_main);
49         
50         getData();
51         listView = (ListView)findViewById(R.id.listView);
52         //构建Adapter
53         //第一个参数:context,即与适配器的View运行的Context
54         //第二个参数:data
55         //第三个参数:resource,为listView项定义视图的布局id
56         //第四个参数:from
57         //第五个参数:to,要显示到的View的id
58         adapter = new SimpleAdapter(this,
59                 listItems ,
60                 R.layout.listview_item, 
61                 new String[] {"image","title","content"},
62                 new int[] {R.id.list_image,R.id.item_title,R.id.item_content});
63         //添加adapter到listView并显示
64         listView.setAdapter(adapter);
65         
66         //为listView项添加响应监听事件
67         listView.setOnItemClickListener(new OnItemClickListener() {
68 
69             @Override
70             public void onItemClick(AdapterView<?> parent, View view,
71                     int position, long id) {
72                 Toast.makeText(MainActivity.this,
73                             "你点击的是标题为"+listTitle[position], 
74                             Toast.LENGTH_LONG).show();
75             }
76         });
77         
78     }
79 }

 

MainActivity界面布局文件

 

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical">
 6     
 7     <ListView
 8         android:id="@+id/listView"
 9         android:layout_width="match_parent"
10         android:layout_height="wrap_content"
11         >
12     </ListView>
13 </LinearLayout>

 

 

 

ListView项布局文件

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:id="@+id/ListViewItem"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:orientation="horizontal" >
 7     
 8     <ImageView 
 9         android:id="@+id/list_image"
10         android:layout_width="50dp"
11         android:layout_height="50dp"
12         android:src="@drawable/ic_launcher"
13         />
14      <LinearLayout 
15         android:id="@+id/list_content" 
16         android:layout_width="fill_parent"
17         android:layout_height="50dp"
18         android:orientation="vertical"
19          >
20         <TextView 
21             android:id="@+id/item_title"
22             android:layout_width="match_parent"
23             android:layout_height="0dp"
24             android:layout_weight="1"
25             />
26          <TextView 
27             android:id="@+id/item_content"
28             android:layout_width="match_parent"
29             android:layout_height="0dp"
30             android:layout_weight="1"
31             android:textSize="10sp"
32             android:textColor="@android:color/darker_gray"
33              />
34      </LinearLayout>
35 </LinearLayout>

  Demo运行效果:

        

 

posted @ 2014-12-07 10:54  onerepublic  阅读(819)  评论(0编辑  收藏  举报