ListActivity---
来源:互联网 发布:ubuntu 用户组 编辑:程序博客网 时间:2024/05/16 16:14
ListActivity实际上是ListView和Activity的结合体。也就是说,一个ListActivity就是只包含一个ListView组件的Activity。在ListActivity类内部通过代码来创建ListView对象,因此,使用ListActivity并不需要使用XML布局文件来定义ListView组件。
如果在某些Activity中只包含一个ListView,使用ListActivity是非常方便的。可以通过ListActivity类的setListActivity方法来设置Adapter对象。该方法相当于调用了ListView类的setAdapter方法。
也可以通过ListActivity类的getListView方法获得当前ListActivity的ListView对象,并像操作普通的ListView对象一样操作ListActivity中的ListView对象。
android sdk还提供了更简单的方法来完成这个工作,这就是SimpleAdapter类。SimpleAdapter类只有一个构造方法,其定义如下:
public SimpleAdpater(Context context,List<? extends Map<String,?>> data,int resource,String[] from,int[] to)
context一般用this来代替。data是一个List类型的参数,而List对象的元素类型一个Map<String ?>类型。先看一个本例所使用的布局文件(mail.xml)的内容,然后再说明data参数的含义。main.xml文件的内容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView android:id="@+id/ivLogo" android:layout_width="60dp"
android:layout_height="60dp" android:src="@drawable/icon"
android:paddingLeft="10dp" />
<TextView android:id="@+id/tvApplicationName"
android:layout_width="wrap_content" android:layout_height="fill_parent"
android:textSize="16dp" android:gravity="center_vertical" android:paddingLeft="10dp"/>
</LinearLayout>
上面代码中定义两个组件:ImageView和TextView。这两个布局文件将作为列表项的模板来显示每一个列表项。因此,每个列表项都要根据不同情况设置ImageView图像和TextView文本。假设要添加两个列表项,就意味着设置4个值(每个列表项两个值)。每个列表项的值可以用一个Map对象来表示。key表示相应组件的Id值(在本例中是ivLogo和tvApplicationName),value表示具体值。在本例中,需要使用如下代码来设置这两个列表项的值:
Map<String,Object>item1 = new HashMap<String,Object>();
//设置第一个列表项的数据
item1.put("ivLogo",R.drawable.calendar);
itme1.put("ivApplicationName","多功能日历“);
Map<String,Object>item2 = new HashMap<String,Object>();
//设置第二个列表项的数据
item2.put("ivLogo",R.drawable.eoemarket);
item2.put("ivApplicationName","eoemarket客户端");
List<Map<String,Object>>data= new ArrayList<Map<String,Object>>();
//将两个Map对象添加到List对象中,该对象就是SimpleAdapter构造方法的第二个参数值:
String[] from = new String[]{"ivLogo","tvApplicationName"};
int[] to = new int[]{R.id.ivLogo,R.id.tvApplicationName};
注意:from和to数组设置的组件的顺序要一致,也就是说,from的第n个元素要对应to的第n个元素。但from和to数组的顺序可以和data参数中设置列表项的顺序不一致。
在本例中onCreate()方法中使用上述方式创建了SimpleAdapter对象,并将该对象与ListActivity对象进行绑定,完整的代码如下:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
List<Map<String,Object>>appItems = new ArrayList<Map<String,Object>>();
//设置data参数的值,其中resIds和applicationNames保存列表项中相应组件的值
for(int i = 0;i<applicationNames.length;i++)
{
Map<Stirng,Object> appItem = new HashMap<String,Object>();
appItem.put("ivLogo",resIds[i]);
appItem.put("ivApplicationName",applicationNames[i]);
appItems.add(appItem);
}
SimpleAdapter simpleAdapter = new SimpleAdapter(this,appItems,R.layout.main,new String[]{"tvApplicationName","ivLogo"},new int[]{R.id.tvApplicationName,R.id.ivLogo});
setListAdapter(simpleAdapter);
如果在某些Activity中只包含一个ListView,使用ListActivity是非常方便的。可以通过ListActivity类的setListActivity方法来设置Adapter对象。该方法相当于调用了ListView类的setAdapter方法。
也可以通过ListActivity类的getListView方法获得当前ListActivity的ListView对象,并像操作普通的ListView对象一样操作ListActivity中的ListView对象。
android sdk还提供了更简单的方法来完成这个工作,这就是SimpleAdapter类。SimpleAdapter类只有一个构造方法,其定义如下:
public SimpleAdpater(Context context,List<? extends Map<String,?>> data,int resource,String[] from,int[] to)
context一般用this来代替。data是一个List类型的参数,而List对象的元素类型一个Map<String ?>类型。先看一个本例所使用的布局文件(mail.xml)的内容,然后再说明data参数的含义。main.xml文件的内容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView android:id="@+id/ivLogo" android:layout_width="60dp"
android:layout_height="60dp" android:src="@drawable/icon"
android:paddingLeft="10dp" />
<TextView android:id="@+id/tvApplicationName"
android:layout_width="wrap_content" android:layout_height="fill_parent"
android:textSize="16dp" android:gravity="center_vertical" android:paddingLeft="10dp"/>
</LinearLayout>
上面代码中定义两个组件:ImageView和TextView。这两个布局文件将作为列表项的模板来显示每一个列表项。因此,每个列表项都要根据不同情况设置ImageView图像和TextView文本。假设要添加两个列表项,就意味着设置4个值(每个列表项两个值)。每个列表项的值可以用一个Map对象来表示。key表示相应组件的Id值(在本例中是ivLogo和tvApplicationName),value表示具体值。在本例中,需要使用如下代码来设置这两个列表项的值:
Map<String,Object>item1 = new HashMap<String,Object>();
//设置第一个列表项的数据
item1.put("ivLogo",R.drawable.calendar);
itme1.put("ivApplicationName","多功能日历“);
Map<String,Object>item2 = new HashMap<String,Object>();
//设置第二个列表项的数据
item2.put("ivLogo",R.drawable.eoemarket);
item2.put("ivApplicationName","eoemarket客户端");
List<Map<String,Object>>data= new ArrayList<Map<String,Object>>();
//将两个Map对象添加到List对象中,该对象就是SimpleAdapter构造方法的第二个参数值:
String[] from = new String[]{"ivLogo","tvApplicationName"};
int[] to = new int[]{R.id.ivLogo,R.id.tvApplicationName};
注意:from和to数组设置的组件的顺序要一致,也就是说,from的第n个元素要对应to的第n个元素。但from和to数组的顺序可以和data参数中设置列表项的顺序不一致。
在本例中onCreate()方法中使用上述方式创建了SimpleAdapter对象,并将该对象与ListActivity对象进行绑定,完整的代码如下:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
List<Map<String,Object>>appItems = new ArrayList<Map<String,Object>>();
//设置data参数的值,其中resIds和applicationNames保存列表项中相应组件的值
for(int i = 0;i<applicationNames.length;i++)
{
Map<Stirng,Object> appItem = new HashMap<String,Object>();
appItem.put("ivLogo",resIds[i]);
appItem.put("ivApplicationName",applicationNames[i]);
appItems.add(appItem);
}
SimpleAdapter simpleAdapter = new SimpleAdapter(this,appItems,R.layout.main,new String[]{"tvApplicationName","ivLogo"},new int[]{R.id.tvApplicationName,R.id.ivLogo});
setListAdapter(simpleAdapter);
- ListActivity
- ListActivity
- ListActivity
- ListActivity
- ListActivity---
- ListActivity
- ListActivity
- ListActivity
- ListActivity
- ListActivity
- ListActivity
- ListActivity
- ListActivity
- ListActivity
- ListActivity
- ListActivity
- android ListActivity
- listActivity implements
- linux之getcwd函数解析
- 【xtku】女星&&黄美姬win7主题_8.6
- NSString / NSData / char 类型之间的转换
- 查看端口被哪个资源占用的方法
- IOCP编程小结(中)--转载
- ListActivity---
- android TextView中文字通过SpannableString设置属性
- USACO:Your Ride is here
- JDK配置环境变量
- android google maps之 简单定位(三)
- jsop中的select()的使用
- C 语言实现linux读取和修改IP地址
- Xcode安装cocos2d
- 安装提示错误 [INSTALL_FAILED_OLDER_SDK]的解决方案