ListActivity

转自:http://blog.csdn.net/xiaobo68688/article/details/6386645

ListActivity

 

         ListActivity中比较复杂的部分就是配置其Adapter,Adapter常用的有ArrayAdapter和SimpleAdapter。

 

首先我们先看一下简单的ArrayAdapter:ListActivity不同于普通Activity的地方是该Activity里边有一个ListView,该ListView绑定了Adapter中的数据。在这个示例中,该ListView绑定了包含三个元素的ArrayList,这三个元素分别是”1, 2, 3”。

        ListActivity_第1张图片

         主要代码:

         首先我们需要让我们的类继承于ListActivity

 pubic class ListActivityTest extends ListActivity
 {
 …..
 }


让我们直接看代码吧:
public class ListActivityTest extends ListActivity
 {
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState)
 {
 super.onCreate(savedInstanceState);
 this.setTheme(android.R.style.Theme_Black);
 // setContentView(R.layout.main);

 List items = fillArray();

 ArrayAdapter adapter = new ArrayAdapter(
 this, android.R.layout.simple_expandable_list_item_1, items);
 this.setListAdapter(adapter);
 }

 private List fillArray()
 {
 List items = new ArrayList();
 items.add("1");
 items.add("2");
 items.add("3");
 return items;
 }
 }

fillArray()返回了一个有三个String对象的List集合,我们在后边用来绑定ListView显示的内容。

然后我们需要在类中的onCreate()函数里边添加如下内容:

List items = this.getData();  // 获得待绑定的集合

ArrayAdapter adapter = new ArrayAdapter(

                this, android.R.layout.simple_expandable_list_item_1,

 items);

         this.setListAdapter(adapter);

其中:this代表当前的Context;android.R.layout.simple_expandable_list_item_1代表一个包含ListView的layout的ID,系统自带了几种,我们在这里选择的是系统自带的;items表示被绑定的数据源。

 

OK,简单的看完我们就可以看复杂一点的SimpleAdapter

我们还是先来看一下效果:

ListActivity_第2张图片 

先上代码:

public class ListActivitySimpleDemo extends ListActivity{
	/** Called when the activity is first created. */  
	 @Override  
	 public void onCreate(Bundle savedInstanceState)  
	 {  
		 super.onCreate(savedInstanceState);  
		 List<Map<String,String>> listContent = this.getData();  
		  
		 SimpleAdapter adapter = new SimpleAdapter(this, listContent, android.R.layout.simple_list_item_2,  
				 	new String[] {"Name", "Address"},  
		 new int[] {android.R.id.text1, android.R.id.text2});  
		   
		 setListAdapter(adapter);  
	 }  
	   
	 private List<Map<String,String>> getData()  
	 {  
		 List<Map<String, String>> listContent = new ArrayList<Map<String, String>>(); 
		   
		 Map<String, String>  table1 = new HashMap<String, String>(); 
		 table1.put("Name", "XiaoCui");  
		 table1.put("Address", "China");  
		 listContent.add(table1);  
		   
		 Map<String, String>  table2 = new HashMap<String, String>(); 
		 table2.put("Name", "HuaHua");  
		 table2.put("Address", "QingDao");  
		 listContent.add(table2);  
		   
		 return listContent;  
	 }  	 
}  


 讲解:

SimpleAdapter可以实现比ArrayAdapter更加复杂的ListView界面,我们这个程序实现的是一项中有两行文字的ListView。

其中的getData()函数返回的是一个List,这个不懂的朋友请查阅相关的Java基础资料。在onCreate()函数中构造了一个SimpleAdapter(),我们看一下SimpleAdapter()的构造函数:

SimpleAdapter(Context context, List> data, int resource, String[] from, int[] to)

其中:

context : 当前的环境上下文,一般直接传递this就OK

Data:数据源,我们之前构造的listContent就是该ListView的数据源

resource:layout模板资源,我们可以传递Android自带的,当然也可以自定义,我们在这里为了简单传递的是Android自带的

from和to:这个我们需要联合起来看,这两个是平行数组,也就是数组的大小相同,根据我们的例子,我们需要在android.R.id.text1中显示数据源中索引为”name”的项,在android.R.id.text2种显示索引为”address”的项。

你可能感兴趣的:(ListActivity)