`

Android学习之-ListView组件

阅读更多

ListView : 它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示

listView三要素:

a). 展示数据的item

b). 数据源

c). 适配器(adapter):将数据展示到item的中介

 

listView的类型 有三种:

a). ArrayListAdapter: 展示简单的字符串, 一个子项只能展示一行.

b). SimpleAdapter: 自定义适配器 , 能够随意展示自己想要的布局结构.

c). SimpleCursorAdapter :展示从SQLite读取的数据.把从游标得到的数据进行列表显示, 并能报指定的列映射到对应的TextView中.

例子:

运行结果:

代码:

public class ListViewTest extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    	
        super.onCreate(savedInstanceState);
        
        
        setContentView(R.layout.main);  
        //绑定XML中的ListView,作为Item的容器  
        ListView list = (ListView) findViewById(R.id.myListView);  
          
        //生成动态数组,并且转载数据  
        ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();  
        for(int i=0;i<30;i++)  
        {  
            HashMap<String, String> map = new HashMap<String, String>();  
            map.put("ItemTitle", "This is Title.....");  
            map.put("ItemText", "This is text.....");  
            mylist.add(map);  
        }  
        //生成适配器,数组===》ListItem  
        SimpleAdapter mSchedule = new SimpleAdapter(this, //没什么解释  
                                                    mylist,//数据来源   
                                                    R.layout.list_view_test,//ListItem的XML实现  
                                                      
                                                    //动态数组与ListItem对应的子项          
                                                    new String[] {"ItemTitle", "ItemText"},   
                                                      
                                                    //ListItem的XML文件里面的两个TextView ID  
                                                    new int[] {R.id.itemTitle,R.id.itemText});  
        //添加并且显示  
        list.setAdapter(mSchedule);  
    }
}

 

 

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

	<ListView android:layout_width="wrap_content"
  				android:layout_height="wrap_content"
  				android:id="@+id/myListView"></ListView>
</LinearLayout>

 

list_view_test.xml

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  android:paddingLeft="10dip"
  android:paddingBottom="3dip"
  android:id="@+id/myListItem">
  				
  				<TextView android:layout_width="wrap_content"
  							android:layout_height="wrap_content"
  							android:id="@+id/itemTitle"
  							android:textSize="30dip">
  				</TextView>
  				
  				<TextView android:layout_width="fill_parent"
  							android:layout_height="wrap_content"
  							android:id="@+id/itemText"
  							android:textSize="10dip">
  				</TextView>
</LinearLayout>

 

 

listview的实现原理:

1. 在listview开始绘制的时候调用getCount()方法获取listview子项的个数

2. 根据返回的长度, 调用getView()逐一绘制每一行.

 

 

原文转载:

 http://blog.csdn.net/sam_zhang1984/archive/2011/03/19/6261818.aspx

http://blog.csdn.net/hellogv/archive/2009/09/11/4542668.aspx

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics