ListView是一个经常用到的控件,ListView里面的每个子项Item可以使一个字符串,也可以是一个组合控件。先说说ListView的实现:
1.准备ListView要显示的数据 ;
2.使用 一维或多维 动态数组 保存数据;
2.构建适配器 , 简单地来说, 适配器就是 Item数组 , 动态数组 有多少元素就生成多少个Item;
3.把 适配器 添加到ListView,并显示出来。
接下来,就开始UI的XML代码:
main.xml代码如下,很简单,也不需要多做解释了:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.listviewdemo.MainActivity"
>
<ListView
android:id="@+id/list_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
</ListView>
</RelativeLayout>
my_listitem.xml的代码如下,my_listitem.xml用于设计ListView的Item:
<?xml
version="1.0"
encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mylistitem_id"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="3dip"
android:paddingLeft="10dip"
>
<TextView
android:id="@+id/item_tv_id"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textSize="30dip"
/>
<TextView
android:id="@+id/item_tv2_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
解释一下,里面用到的一些属性:
1.paddingBottom="3dip",Layout往底部留出3个像素的空白区域
2.paddingLeft="10dip",Layout往左边留出10个像素的空白区域
3.textSize="30dip",TextView的字体为30个像素那么大。
最后就是JAVA的源代码:
public class MainActivity
extends Activity {
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findView();
//生成动态数组
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" + i);
map.put("ItemText",
"This is text......");
myList.add(map);
}
//生成适配器
SimpleAdapter mSchedule = new SimpleAdapter(this,
myList, //数据来源
R.layout.my_listitem,//ListItem的xml实现,进行连接
new String[] {"ItemTitle","ItemText"},//动态数组与ListItem对应的子项
new
int[] {R.id.item_tv_id,R.id.item_tv2_id});//ListItem的XML文件里面的两个TextView ID
listView.setAdapter(mSchedule);
//添加并且显示
}
public void findView() {
listView = (ListView)findViewById(R.id.list_id);
}