本实验在“安卓开发2”实验基础上进行:安卓开发2——碎片Fragment的使用
实验内容:
1、设计一个新闻数据库,包含一个新闻表:
表名:NewsTable
字段名 |
数据类型 |
约束 |
说明 |
nID |
integer |
主键,自增 |
新闻ID |
Title |
text |
|
标题 |
Content |
text |
|
内容 |
Source |
text |
|
来源 |
time |
text |
|
发布时间 |
imageSource | int | 新闻图片的地址来源 |
2、重写SQLiteOpenHelper类,以使第一次加载时能创建数据库及表,并insert几条初始新闻;当ListActivity加载时,读取数据库中的信息,并创建News对象序列并将数据库中的记录写入,其他程序逻辑可不修改。
3、修改新闻列表,以ListView实现,或在Layout中动态生成TextView实现,使得新闻列表可根据数据库中新闻条数多少而增减。
4、使用SharedPreferences保存已看过的新闻ID,下次再进入时,以灰色显示。
实验过程:
1、新建CreateNewDB类继承SQLiteOpenHelper,重写其中的方法。该类用于创建数据库,数据库中包含一张表,表名为NewsTable。
2、在ListActivity活动第一次创建时进行数据库的创建,数据库名为News.db,随后插入三则新闻数据在表中。接着从表中读出新闻数据,利用cursor.getCount()获取新闻条数,再创建相应数目的News[]数组,最后把每条news[i]添加进lstNews中,用于后面自定义适配器。
3、自定义适配器MyAdapter继承ArrayAdapter,该适配器可通过泛型来指定要适配的数据类型(该处数据类型为News),然后将数据直接传递给ListView。往MyAdapter中传入的布局R.layout.news_item为ListView中每一子项的布局。
4、getAlRead()方法的功能为判断新闻是否达到阅读时间,若是,则将新闻ID添加进lstID,并将该lstID中的数据转成以“,”相间的字符串,最后将字符串以SharePreferences的方式进行保存。
changeColor()方法的功能为利用SharePreferences方法读取之前保存的字符串,再利用split()方法获取到已读新闻的ID,最后将已读新闻置灰。这两个方法都在ListActivity的onStart中调用。
下面是程序运行结果: