EX08_13_1.java
上传用户:vip_99
上传日期:2021-03-27
资源大小:61159k
文件大小:3k
源码类别:

android开发

开发平台:

Java

  1. package irdc.ex08_13;
  2. /* import相关class */
  3. import java.net.URL;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import android.app.ListActivity;
  7. import android.content.Intent;
  8. import android.os.Bundle;
  9. import android.view.View;
  10. import android.widget.ListView;
  11. import android.widget.TextView;
  12. import javax.xml.parsers.*;
  13. import org.xml.sax.InputSource;
  14. import org.xml.sax.XMLReader;
  15. public class EX08_13_1 extends ListActivity
  16. {
  17.   /* 变量声明 */
  18.   private TextView mText;
  19.   private String title="";
  20.   private List<News> li=new ArrayList<News>();
  21.   @Override
  22.   public void onCreate(Bundle savedInstanceState) {
  23.     super.onCreate(savedInstanceState);
  24.     /* 设置layout为newslist.xml */
  25.     setContentView(R.layout.newslist);
  26.     mText=(TextView) findViewById(R.id.myText);
  27.     /* 取得Intent中的Bundle对象 */
  28.     Intent intent=this.getIntent();
  29.     Bundle bunde = intent.getExtras();
  30.     /* 取得Bundle对象中的数据 */
  31.     String path = bunde.getString("path");
  32.     /* 调用getRss()取得解析后的List */
  33.     li=getRss(path);
  34.     mText.setText(title);
  35.     /* 设置自定义的MyAdapter */
  36.     setListAdapter(new MyAdapter(this,li));
  37.   }
  38.   /* 设置ListItem被点击时要做的动作 */
  39.   @Override
  40.   protected void onListItemClick(ListView l,View v,int position,
  41.                                  long id)
  42.   {
  43.     /* 取得News对象 */
  44.     News ns=(News)li.get(position);
  45.     /* new一个Intent对象,并指定class */
  46.     Intent intent = new Intent();
  47.     intent.setClass(EX08_13_1.this,EX08_13_2.class);
  48.     /* new一个Bundle对象,并将要传递的数据传入 */
  49.     Bundle bundle = new Bundle();
  50.     bundle.putString("title",ns.getTitle());
  51.     bundle.putString("desc",ns.getDesc());
  52.     bundle.putString("link",ns.getLink());
  53.     /* 将Bundle对象assign给Intent */
  54.     intent.putExtras(bundle);
  55.     /* 调用Activity EX08_13_2 */
  56.     startActivity(intent);
  57.   }
  58.   /* 解析XML的方法 */
  59.   private List<News> getRss(String path)
  60.   {
  61.     List<News> data=new ArrayList<News>();
  62.     URL url = null;
  63.     try
  64.     {  
  65.       url = new URL(path);
  66.       /* 产生SAXParser对象 */ 
  67.       SAXParserFactory spf = SAXParserFactory.newInstance();
  68.       SAXParser sp = spf.newSAXParser(); 
  69.       /* 产生XMLReader对象 */ 
  70.       XMLReader xr = sp.getXMLReader(); 
  71.       /* 设置自定义的MyHandler给XMLReader */ 
  72.       MyHandler myExampleHandler = new MyHandler(); 
  73.       xr.setContentHandler(myExampleHandler);
  74.       /* 解析XML */
  75.       xr.parse(new InputSource(url.openStream()));
  76.       /* 取得RSS标题与内容列表 */
  77.       data =myExampleHandler.getParsedData(); 
  78.       title=myExampleHandler.getRssTitle();
  79.     }
  80.     catch (Exception e)
  81.     {
  82.       /* 发生错误时返回result回上一个activity */
  83.       Intent intent=new Intent();
  84.       Bundle bundle = new Bundle();
  85.       bundle.putString("error",""+e);
  86.       intent.putExtras(bundle);
  87.       /* 错误的返回值设置为99 */
  88.       EX08_13_1.this.setResult(99, intent);
  89.       EX08_13_1.this.finish();
  90.     }
  91.     return data;
  92.   }
  93. }