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