Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android RSS客戶端開發實例之三:在UI中顯示RSS列表

Android RSS客戶端開發實例之三:在UI中顯示RSS列表

編輯:Android開發實例

       前面兩部分分別講了RSS概述和解析XML文件,本節講解怎樣在列表中顯示RSS內容。

       首先修改main.java文件,調用前面的類,由intentert獲取rss列表並顯示在UI上:

Java代碼
  1. public final String RSS_URL = "http://blog.sina.com.cn/rss/1267454277.xml";//從網絡獲取RSS地址   
  2. public final String tag = "RSSReader";   
  3. private RSSFeed feed = null;   
  4.   
  5. /** Called when the activity is first created. */  
  6.   public void onCreate(Bundle icicle) {   
  7.         super.onCreate(icicle);   
  8.         setContentView(R.layout.main);   
  9.         feed = getFeed(RSS_URL);//調用getFeed方法,從服務器取得rss提要   
  10.         showListView();     //把rss內容綁定到ui界面進行顯示   
  11.          }   
  12. private RSSFeed getFeed(String urlString)  //該方法通過url獲得xml並解析xml內容為RSSFeed對象   
  13.     {   
  14.      try  
  15.      {   
  16.         URL url = new URL(urlString);   
  17.           SAXParserFactory factory = SAXParserFactory.newInstance();   
  18.            SAXParser parser = factory.newSAXParser();   
  19.            XMLReader xmlreader = parser.getXMLReader();   
  20.            RSSHandler rssHandler = new RSSHandler();   
  21.            xmlreader.setContentHandler(rssHandler);   
  22.           InputSource is = new InputSource(url.openStream());       
  23.            xmlreader.parse(is);   
  24.           return rssHandler.getFeed();   
  25.      }   
  26.      catch (Exception ee)   
  27.      {   
  28. return null;   
  29.      }   
  30.     }   
  31.  private void showListView()   
  32.     {   
  33.         ListView itemlist = (ListView) findViewById(R.id.itemlist);        
  34.         if (feed == null)   
  35.         {   
  36.          setTitle("訪問的RSS無效");   
  37.          return;   
  38.         }   
  39.   
  40.   SimpleAdapter adapter = new SimpleAdapter(this, feed.getAllItemsForListView(),   
  41.          android.R.layout.simple_list_item_2, new String[] { RSSItem.TITLE,RSSItem.PUBDATE },   
  42.          new int[] { android.R.id.text1 , android.R.id.text2});   
  43.         itemlist.setAdapter(adapter);  //listview綁定適配器   
  44.         itemlist.setOnItemClickListener(this);  //設置itemclick事件代理   
  45.         itemlist.setSelection(0);   
  46.            
  47.     }   
  48.        
  49.      public void onItemClick(AdapterView parent, View v, int position, long id)   //itemclick事件代理方法   
  50.      {   
  51.       Intent itemintent = new Intent(this,ActivityShowDescription.class);//構建一個“意圖”,用於指向activity :detail   
  52.           Bundle b = new Bundle();  //構建buddle,並將要傳遞參數都放入buddle   
  53.       b.putString("title", feed.getItem(position).getTitle());   
  54.       b.putString("description", feed.getItem(position).getDescription());   
  55.       b.putString("link", feed.getItem(position).getLink());   
  56.       b.putString("pubdate", feed.getItem(position).getPubDate());   
  57.        itemintent.putExtra("android.intent.extra.rssItem", b);    //用android.intent.extra.INTENT的名字來傳遞參數   
  58.          startActivityForResult(itemintent, 0);   
  59.      }   
  60.        
  61. }  

       到此,程序已經可以顯示第1個Activity(頁面)了。但由於程序使用了網絡,我們還必須在AndroidManifest.xml中增加使用網絡的權限。

       當我們點擊一個item的時候,頁面要跳轉到另一個Activity,用來展現item裡面的內容,所以需要建立一個新的Activity:ActivityShowDescription。

Java代碼
  1. public class ActivityShowDescription extends Activity {   
  2. public void onCreate(Bundle icicle) {   
  3. super.onCreate(icicle);   
  4. setContentView(R.layout.showdescription);   
  5. String content = null;   
  6. Intent startingIntent = getIntent();   
  7.   
  8.   
  9. if (startingIntent != null) {   
  10. Bundle bundle = startingIntent   
  11. .getBundleExtra("android.intent.extra.rssItem");   
  12. if (bundle == null) {   
  13. content = "不好意思程序出錯啦";   
  14. } else {   
  15. content = bundle.getString("title") + "\n\n"  
  16. + bundle.getString("pubdate") + "\n\n"  
  17. + bundle.getString("description").replace('\n', ' ')   
  18. + "\n\n詳細信息請訪問以下網址:\n" + bundle.getString("link");   
  19. }   
  20. } else {   
  21. content = "不好意思程序出錯啦";    
  22. }   
  23.    
  24. TextView textView = (TextView) findViewById(R.id.content);   
  25. textView.setText(content);   
  26.    
  27. Button backbutton = (Button) findViewById(R.id.back);   
  28.    
  29. backbutton.setOnClickListener(new Button.OnClickListener() {   
  30. public void onClick(View v) {   
  31. finish();   
  32. }   
  33. });   
  34. }   
  35. }  

       它對應的xml文件如下:

XML/HTML代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7. <TextView     
  8.     android:layout_width="fill_parent"    
  9.     android:layout_height="wrap_content"    
  10.     android:autoLink="all"  
  11.     android:text=""  
  12.     android:id="@+id/content"  
  13.     android:layout_weight="1.0"  
  14.     />  
  15. <Button  
  16.     android:layout_width="fill_parent"    
  17.     android:layout_height="wrap_content"    
  18.     android:text="返回"  
  19. android:id="@+id/back"  
  20. />       
  21. </LinearLayout>  

       此外還需要在AndroidMainfest.xml裡添加<activity android:name=".ActivityShowDescription"></activity>

       這樣我們就完成了這個RSS客戶端小程序,運行效果如下:

Android RSS客戶端顯示列表

Android RSS訂閱詳細信息

       Android系統中RSS客戶端的開發還不算很難吧?以後我們可以做自己的Android RSS閱讀器了。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved