Android XML讀寫(二)
作者:佚名
本文將介紹一種典型的多態(tài)行為 — 提供相同行為的不同實(shí)現(xiàn)(不同的 XML 解析算法),并展示了如何在Java代碼中使用一個(gè)接口建立這一模型。
Android 新聞閱讀器
應(yīng)用程序?qū)臒衢T Android 開發(fā)人員站點(diǎn) Androidster 獲取一個(gè) RSS 提要,并將它解析為一組簡(jiǎn)單的 Java 對(duì)象,您可以使用這些對(duì)象構(gòu)建一個(gè) Android ListView(參見下載部分獲取源代碼)。這是一種典型的多態(tài)行為 — 提供相同行為的不同實(shí)現(xiàn)(不同的 XML 解析算法)。清單 1 展示了如何在 Java 代碼中使用一個(gè)接口建立這一模型。
清單 1. XML 提要解析器接口
java代碼:
- package eoe.android;
- import java.util.List;
- public interface FeedParser {
- List< Message > parse();
- }
java代碼:
- public class Message implements Comparable< Message >{
- static SimpleDateFormat FORMATTER =new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");
- private String title;
- private URL link;
- private String description;
- private Date date;
- // getters and setters omitted for brevity
- public void setLink(String link) {
- try {
- this.link = new URL(link);
- } catch (MalformedURLException e) {
- throw new RuntimeException(e);
- }
- }
- public String getDate() {
- return FORMATTER.format(this.date);
- }
- public void setDate(String date) {
- // pad the date if necessary
- while (!date.endsWith("00")){
- date += "0";
- }
- try {
- this.date = FORMATTER.parse(date.trim());
- } catch (ParseException e) {
- throw new RuntimeException(e);
- }
- }
- @Override
- public String toString() {
- // omitted for brevity
- }
- @Override
- public int hashCode() {
- // omitted for brevity
- }
- @Override
- public boolean equals(Object obj) {
- // omitted for brevity
- }
- // sort by date
- public int compareTo(Message another) {
- if (another == null) return 1;
- // sort descending, most recent first
- return another.date.compareTo(date);
- }
- }
責(zé)任編輯:閆佳明
來源:
my.eoe.cn