探索Android应用开发(一)
学习目标:
开发一个简单的记录消费行为的应用,以列表的形式展现消费记录,当没有记录时,显示提示问题:No content!。
学习目的:
了解LinearLayout、ListView和TextView,掌握ListActivity的基本应用,掌握如何绑定数据。
学习收获:
为了能够实现在有数据时,呈现数据列表,没有数据时,呈现文字提示信息的效果,我们要修改ListActivity的默认布局。通过在onCreate方法里,调用setContentView即可达到自定义布局的效果。
如以下(notes_list.xml)所示:
在上面文字中,list和empty是android平台提供的,所以必须通过用android:id来做前缀。同时也了解到LinearLayout是一种GroupView,能够水平或者垂直摆放View元素。
ListActivity就是通过绑定一个数据源,例如数组或者Cursor,来展现条目列表,并且暴露事件(用户选中某个条目)的handler。而把ListActivity的ListView对象和数据绑定起来正是通过一个类,这个类要实现ListAdapter接口。
Android提供了两种标准的list adapter:适用于静态数据(Maps)的SimpleAdapter,和适用于查询结果光标的SimpleCursorAdapter。
public class Purse extends ListActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.notes_list); // The Maps contain the data for each row, and should include all the entries specified in "from" Map tv = new HashMap(); tv.put("type","TV"); tv.put("money", "200.0"); Map phone = new HashMap(); phone.put("type", "PHONE"); phone.put("money", "50.0"); Map notebook = new HashMap(); notebook.put("type", "NOTEBOOK"); notebook.put("money", "500.0"); // A List of Maps. Each entry in the List corresponds to one row in the list. List <map>> list = new LinkedList</map> <map>>(); list.add(tv); list.add(phone); list.add(notebook); // An array of column names that will be added to the Map associated with each item. String[] from = new String[]{"type", "money"}; //The views that should display column in the "from" parameter. These should all be TextViews. int[] to = {R.id.type, R.id.money}; ListAdapter adapter = new SimpleAdapter(this, list, R.layout.notes_row, from, to); this.setListAdapter(adapter); } } </map> |
有了整个屏幕的布局以后,还可以单独指定列表中行的布局。要做到这一点是通过activity持有的ListAdapter对象。
行布局信息如以下内容(notes_row.xml)所示:
感觉没写完啊,最后一句notes_row.xml在哪呀?(二)也没有啊?
嗯,确实不见了notes_row.xml的内容,估计补不上了。《探索Android应用开发》我陆陆续续写了十篇,第二篇在http://www.poemcode.net/2009/03/android_develop_2/