ListView的简单使用

    ListView是Android软件开发中非常重要组件之一,基本上是个软件基本都会使用ListView.ListView通常有两个职责。
    
   (1)将数据填充到布局。
   (2)处理用户的选择点击等操作。
    第一点很好理解,ListView就是实现这个功能的。
    第二点也不难做到,比较简单。
    
    一个ListView的创建需要3个元素。
   (1)ListView中的每一列的View。
   (2)填入View的数据或者图片等。
   (3)连接数据与ListView的适配器。

    也就是说,要使用ListView,首先要了解什么是适配器。适配器是一个连接数据和AdapterView(ListView就是一个典型的AdapterView,后面还会学习其他的)的桥梁,通过它能有效地实现数据与AdapterView的分离设置,使AdapterView与数据的绑定更加简便,修改更加方便。Android中提供了很多的Adapter,主要如下:
    SimpleAdapter        用来绑定在xml中定义的控件对应的数据
    SimpleCursorAdapter  用来绑定游标得到的数据
    BaseAdapter          通用的基础适配器


    一个简单的创建ListView的步骤:
    1)创建数据集,一般定义如下
    private List<Map<String, Object>> listItems;
    
    元素添加方式:
    Map<String, Object> map = new HashMap<String, Object>(); 
    map.put("image", imgeIDs[i]);          //图片资源
    map.put("title", "物品名称:");           //物品标题
    map.put("info", goodsNames[i]);      //物品名称
    map.put("detail", goodsDetails[i]);   //物品详情
    listItems.add(map);                         //添加一项
    
    2)创建适配器
    public class ListViewAdapter extends BaseAdapter{........}  //自定义的适配器一般继承BaseAdapter类
    listViewAdapter = new ListViewAdapter(this, listItems);
  
    3)给ListView设置适配器
    listView.setAdapter(listViewAdapter);
    
    4)这里还有个关键点,如何把list_item.xml布局作为一个视图,添加到listView中:
    LayoutInflater listContainer;                                    //视图容器工厂
    listContainer = LayoutInflater.from(context);                    //创建视图容器工厂并设置上下文
    convertView = listContainer.inflate(R.layout.list_item, null);   //创建list_item.xml布局文件的视图
    
    
    下面是一个简单的例子:
    
    MainActivity.java:
    package cn.llbb.testlistview1;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.*;
import android.widget.*;
import android.widget.AdapterView.OnItemClickListener;

import java.util.*;
public class MainActivity extends ActionBarActivity {

	private ListView list = null;
	
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		list = (ListView) findViewById(R.id.listView1);
		
		List<HashMap<String,Object>> listitem= new ArrayList<HashMap<String,Object>>();
		
		for(int i = 1 ; i <= 10; i++){
			HashMap<String, Object> item = new HashMap<String,Object>();
			item.put("itemImage", R.drawable.ic_launcher);
			item.put("itemTitle", "这是第" + i + "行");
			item.put("itmeContent", "这是第" + i + "行的内容");
			listitem.add(item);
		}
		
		SimpleAdapter msimpleadapter = new SimpleAdapter(MainActivity.this, listitem, R.layout.item, 
				                                         new String[]{"itemImage","itemTitle","itmeContent"}, 
                                                         new int[]{R.id.itemImage,R.id.itemTitle,R.id.itemContext});
		list.setAdapter(msimpleadapter);
		list.setOnItemClickListener(new OnItemClickListener() {

			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
				setTitle("第" + (position + 1) + "行");
				
			}
		});
		
	}


}
    
    activity_main.xml:
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:android1="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ListView
        android1:id="@+id/listView1"
        android1:layout_width="match_parent"
        android1:layout_height="wrap_content" >
    </ListView>

</LinearLayout>


    item.xml:
    <?xml version="1.0" encoding="utf-8"?> 
 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="?android:attr/listPreferredItemHeight"> 
    <ImageView android:id="@+id/itemImage" 
        android:layout_width="wrap_content" android:layout_height="fill_parent" 
        android:layout_alignParentTop="true" android:layout_alignParentBottom="true" 
        android:adjustViewBounds="true" 
        android:padding="2dip" /> 
    <TextView android:id="@+id/itemTitle" 
        android:layout_width="wrap_content" android:layout_height="wrap_content" 
        android:layout_toRightOf="@+id/itemImage" 
        android:layout_alignParentRight="true" android:layout_alignParentTop="true" 
        android:layout_above="@+id/itemContext" 
        android:layout_alignWithParentIfMissing="true" android:gravity="center_vertical" 
        android:textSize="15sp" /> 
    <TextView android:id="@+id/itemContext" 
        android:layout_width="fill_parent" android:layout_height="wrap_content" 
        android:layout_toRightOf="@+id/itemImage" 
        android:layout_alignParentBottom="true" 
        android:layout_alignParentRight="true" android:singleLine="true" 
        android:ellipsize="marquee"   
        android:textSize="20sp" /> 
</RelativeLayout>


本文出自 “leboit” 博客,谢绝转载!

你可能感兴趣的:(android,ListView)