ifranFeed original

前端之家收集整理的这篇文章主要介绍了ifranFeed original前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

ifranrFeed original


ifanrFeed 中世纪版!随着移动App的流行,曾经在网络阅读中很流行的RSS技术已经很少有人使用了!可是我还是喜欢这种轻量级的简单的阅读体验,ifanr是我很喜欢的科技媒体,所以这个白垩纪的App就以ifanr左右信息源(Feed)!

项目结构


信息源Feed

首先找到ifanr的RSS地址 http://www.ifanr.com/Feed

可以看出RSS也基于xml的一种数据交换格式,所有解析xml的方式 Dom Pull Saxx都可以使用来解析数据。


Pull解析RSS数据

使用Pull方式解析,KXML作为xml的具体实现!

  1. try {
  2. // 得到解析器工厂,通过静态方法获取一个解析工程对象的引用
  3. XmlPullParserFactory xpf = XmlPullParserFactory.newInstance();
  4. // 通过解析器工厂的得到一个XmlPullParser解析器对象
  5. XmlPullParser parser = xpf.newPullParser();
  6. // 獲得時間類型
  7. int eventType = parser.getEventType();
  8.  
  9. // 解析器设置输入流和编码格式
  10. // 把这一句漏了还搞个毛呀
  11. parser.setInput(is,"UTF-8");
  12.  
  13. // while 遍历 ,只要事件类型不等于文档结束标志
  14. while (eventType != XmlPullParser.END_DOCUMENT) {
  15.  
  16. switch (eventType) {
  17. // 如果事件类型为START_DOCUMENT,即读取文档开头
  18. case XmlPullParser.START_DOCUMENT:
  19.  
  20. list = new ArrayList<News>();
  21.  
  22. break;
  23. // 元素标记开头标志
  24. // 运用pull方式解析xml需要知道节点标签名称
  25. case XmlPullParser.START_TAG:
  26.  
  27. if ("item".equals(parser.getName())) {
  28. // 衹有當標簽名稱爲user時,新建一個對象
  29. news = new News();
  30. Log.i("MainActivity","------> " + "new News()");
  31.  
  32. } else if ("index".equals(parser.getName())) {
  33. int index = Integer.parseInt(parser.nextText());
  34. news.setIndex(index);
  35. Log.i("MainActivity","------------------> "
  36. + "設置Index");
  37. } else if ("title".equals(parser.getName())) {
  38.  
  39. String title = parser.nextText();// 获取该节点内容
  40. if (!title.equals("爱范儿")) {
  41. news.setTitle(title);
  42. }
  43. Log.i("MainActivity","------------------> "
  44. + "設置Title");
  45. } else if ("image".equals(parser.getName())) {
  46. String image = parser.nextText();// 获取该节点内容
  47. news.setImage(image);
  48. } else if ("description".equals(parser.getName())) {
  49.  
  50. String description = parser.nextText();// 获取该节点内容
  51. if (!description.equals("连接热爱")) {
  52. news.setDescription(description);
  53. }
  54. } else if ("content:encoded".equals(parser.getName())) {
  55. // System.out.println("設置password");
  56. String content = parser.nextText();// 获取该节点内容
  57. news.setContent(content);
  58. }
  59.  
  60. break;
  61.  
  62. case XmlPullParser.END_TAG:
  63. if ("item".equals(parser.getName())) {
  64. Log.i("MainActivity","------> " + "得到RSS item");
  65. list.add(news);
  66. news = null;
  67.  
  68. }
  69.  
  70. break;
  71.  
  72. }
  73. // 每次switch选择后跳转到下一标签,事件类型
  74. eventType = parser.next();
  75. }
  76.  
  77. } catch (XmlPullParserException e) {
  78. // TODO Auto-generated catch block
  79. System.out.println("nikan 出错了吧");
  80. e.printStackTrace();
  81. } catch (IOException e) {
  82. e.printStackTrace();
  83. }
  84.  
  85. return list;

HttpUtils辅助类获取xml信息

  1. package com.example.ifanrFeed.service;
  2.  
  3.  
  4.  
  5. import java.io.InputStream;
  6. import java.net.HttpURLConnection;
  7. import java.net.URL;
  8. /** * http工具類 * @author QT * */
  9. public class HttpUtils {
  10. public HttpUtils() {
  11. // TODO Auto-generated constructor stub
  12. }
  13. /** * 通過URL獲取輸入流 * @param path * @return */
  14. public static InputStream getXml(String path){
  15. InputStream is=null;
  16. try {
  17. URL url=new URL(path);
  18. if(url!=null){
  19. //獲得HttpURLConnnection
  20. HttpURLConnection connection =(HttpURLConnection)url.openConnection();
  21. //設置屬性
  22. connection.setConnectTimeout(3000);
  23. connection.setDoInput(true);
  24. connection.setRequestMethod("GET");
  25. int code=connection.getResponseCode();
  26. //GET請求成功
  27. if(code==200){
  28. is=connection.getInputStream();
  29. }
  30. }
  31.  
  32. } catch (Exception e) {
  33. // TODO: handle exception
  34. }
  35. return is;
  36.  
  37. }
  38. }

@H_859_404@使用AsyncTask执行后台任务
  1. AsyncTask<String,Void,List<News>> parseTask = new AsyncTask<String,List<News>>() {
  2. //后台获取List<News>()
  3. @Override
  4. protected List<News> doInBackground(String... arg0) {
  5. String RSSInfo = arg0[0];
  6. News news = null;
  7. InputStream is = HttpUtils.getXml(URL);
  8. Log.i("MainActivity","------> " + "得到RSS Info");
  9. try {
  10. // 得到解析器工厂,通过静态方法获取一个解析工程对象的引用
  11. XmlPullParserFactory xpf = XmlPullParserFactory.newInstance();
  12. // 通过解析器工厂的得到一个XmlPullParser解析器对象
  13. XmlPullParser parser = xpf.newPullParser();
  14. // 獲得時間類型
  15. int eventType = parser.getEventType();
  16.  
  17. // 解析器设置输入流和编码格式
  18. // 把这一句漏了还搞个毛呀
  19. parser.setInput(is,"UTF-8");
  20.  
  21. // while 遍历 ,只要事件类型不等于文档结束标志
  22. while (eventType != XmlPullParser.END_DOCUMENT) {
  23.  
  24. switch (eventType) {
  25. // 如果事件类型为START_DOCUMENT,即读取文档开头
  26. case XmlPullParser.START_DOCUMENT:
  27.  
  28. list = new ArrayList<News>();
  29.  
  30. break;
  31. // 元素标记开头标志
  32. // 运用pull方式解析xml需要知道节点标签名称
  33. case XmlPullParser.START_TAG:
  34.  
  35. if ("item".equals(parser.getName())) {
  36. // 衹有當標簽名稱爲user時,新建一個對象
  37. news = new News();
  38. Log.i("MainActivity","------> " + "new News()");
  39.  
  40. } else if ("index".equals(parser.getName())) {
  41. int index = Integer.parseInt(parser.nextText());
  42. news.setIndex(index);
  43. Log.i("MainActivity","------------------> "
  44. + "設置Index");
  45. } else if ("title".equals(parser.getName())) {
  46.  
  47. String title = parser.nextText();// 获取该节点内容
  48. if (!title.equals("爱范儿")) {
  49. news.setTitle(title);
  50. }
  51. Log.i("MainActivity","------------------> "
  52. + "設置Title");
  53. } else if ("image".equals(parser.getName())) {
  54. String image = parser.nextText();// 获取该节点内容
  55. news.setImage(image);
  56. } else if ("description".equals(parser.getName())) {
  57.  
  58. String description = parser.nextText();// 获取该节点内容
  59. if (!description.equals("连接热爱")) {
  60. news.setDescription(description);
  61. }
  62. } else if ("content:encoded".equals(parser.getName())) {
  63. // System.out.println("設置password");
  64. String content = parser.nextText();// 获取该节点内容
  65. news.setContent(content);
  66. }
  67.  
  68. break;
  69.  
  70. case XmlPullParser.END_TAG:
  71. if ("item".equals(parser.getName())) {
  72. Log.i("MainActivity","------> " + "得到RSS item");
  73. list.add(news);
  74. news = null;
  75.  
  76. }
  77.  
  78. break;
  79.  
  80. }
  81. // 每次switch选择后跳转到下一标签,事件类型
  82. eventType = parser.next();
  83. }
  84.  
  85. } catch (XmlPullParserException e) {
  86. // TODO Auto-generated catch block
  87. System.out.println("nikan 出错了吧");
  88. e.printStackTrace();
  89. } catch (IOException e) {
  90. e.printStackTrace();
  91. }
  92.  
  93. return list;
  94.  
  95. }
  96.  
  97. @Override
  98. protected void onPreExecute() {
  99. // TODO Auto-generated method stub
  100. super.onPreExecute();
  101. }
  102. //返回主线程,设置数据Adapter
  103. @Override
  104. protected void onPostExecute(List<News> result) {
  105. // TODO Auto-generated method stub
  106. super.onPostExecute(result);
  107. adapter = new NewsAdapter();
  108. listView.setAdapter(adapter);
  109.  
  110. }
  111. };

自定义Adapter,使用ViewHolder模式

  1. class NewsAdapter extends BaseAdapter {
  2.  
  3. @Override
  4. public int getCount() {
  5. // TODO Auto-generated method stub
  6. return list.size();
  7. }
  8.  
  9. @Override
  10. public Object getItem(int arg0) {
  11. // TODO Auto-generated method stub
  12. return null;
  13. }
  14.  
  15. @Override
  16. public long getItemId(int arg0) {
  17. // TODO Auto-generated method stub
  18. return 0;
  19. }
  20.  
  21. @Override
  22. public View getView(int position,View convertView,ViewGroup arg2) {
  23. LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
  24. ViewHolder viewHolder = null;
  25.  
  26. if (convertView == null) {
  27. // 若为空,则动态加载一个View
  28. convertView = inflater.inflate(R.layout.new_item,null);
  29.  
  30. // ViewHolder初体验
  31. viewHolder = new ViewHolder();
  32. // 减少findViewById()的执行
  33. /* 不需要每次调用getView()方法就必定调用findViewById() */
  34. viewHolder.imageItem = (ImageView) convertView
  35. .findViewById(R.id.item_image);
  36. viewHolder.textItem = (TextView) convertView
  37. .findViewById(R.id.item_text);
  38.  
  39. convertView.setTag(viewHolder);
  40.  
  41. } else {
  42.  
  43. /* viewHolder通过getTag()完成初始化 */
  44. viewHolder = (ViewHolder) convertView.getTag();
  45. }
  46.  
  47. News news = list.get(position);
  48.  
  49. Picasso.with(MainActivity.this).load(news.getImage()).resize(288,180).centerCrop()
  50. .into(viewHolder.imageItem);
  51. // viewHolder.imageItem.setImageUrl(IMAGE_URL,mImageLoader);
  52. viewHolder.textItem.setText(news.getTitle());
  53.  
  54. return convertView;
  55. }
  56.  
  57. }
  58.  
  59. static class ViewHolder {
  60. private ImageView imageItem;
  61. private TextView textItem;
  62. }

实体类News

  1. package com.example.ifanrFeed.model;
  2.  
  3. import java.io.Serializable;
  4.  
  5. public class News implements Serializable{
  6. //索引
  7. private int index;
  8. //文章标题
  9. private String title;
  10. //文章题图
  11. private String image;
  12. //标签
  13. private String[] category;
  14. //描述
  15. private String description;
  16. //内容
  17. private String content;
  18. public int getIndex() {
  19. return index;
  20. }
  21. public void setIndex(int index) {
  22. this.index = index;
  23. }
  24. public String getTitle() {
  25. return title;
  26. }
  27. public void setTitle(String title) {
  28. this.title = title;
  29. }
  30. public String getImage() {
  31. return image;
  32. }
  33. public void setImage(String image) {
  34. this.image = image;
  35. }
  36. public String[] getCategory() {
  37. return category;
  38. }
  39. public void setCategory(String[] category) {
  40. this.category = category;
  41. }
  42. public String getDescription() {
  43. return description;
  44. }
  45. public void setDescription(String description) {
  46. this.description = description;
  47. }
  48. public String getContent() {
  49. return content;
  50. }
  51. public void setContent(String content) {
  52. this.content = content;
  53. }
  54. @Override
  55. public String toString() {
  56. return "News [index=" + index + ",title=" + title + ",image=" + image
  57. + ",content=" + content + "]";
  58. }
  59.  
  60.  
  61.  
  62. }

布局文件

activity_main.xml

  1. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.ifanrFeed.MainActivity" tools:ignore="MergeRootFrame" >
  2.  
  3. <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" >
  4. </ListView>
  5.  
  6. </FrameLayout>

news_item.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="90dp" android:orientation="vertical" >
  3.  
  4. <ImageView android:id="@+id/item_image" android:layout_width="144dp" android:layout_height="90dp" android:layout_marginLeft="10dp" android:src="@drawable/ic_launcher" />
  5.  
  6. <TextView android:id="@+id/item_text" android:layout_toRightOf="@id/item_image" android:layout_width="wrap_content" android:layout_height="90dp" android:padding="10dp" android:textSize="15sp" android:text="神秘北极圈 阿拉斯加的山巅 谁的脸 出线海角的天边" >
  7. </TextView>
  8.  
  9.  
  10. </RelativeLayout>

获取信息结果


为每个Item添加事件响应

  1. listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  2.  
  3. @Override
  4. public void onItemClick(AdapterView<?> parent,View view,int position,long id) {
  5. News news=list.get(position);
  6. Bundle bundle=new Bundle();
  7. bundle.putSerializable("news",news);
  8.  
  9. Intent intent=new Intent(MainActivity.this,NewsActivity.class);
  10. intent.putExtras(bundle);
  11. startActivity(intent);
  12.  
  13. }
  14. });

注册创建News展示activity

activity_news.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" >
  3.  
  4. <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="5dp" android:orientation="vertical" >
  5.  
  6. <TextView android:id="@+id/NewsTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_margin="5dp" android:text="Title" android:textSize="25sp" />
  7.  
  8. <ImageView android:id="@+id/TitleImage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_margin="5dp" />
  9.  
  10. <TextView android:id="@+id/NewsContent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_margin="5dp" android:text="Content" />
  11. </LinearLayout>
  12.  
  13. </ScrollView>
  1. <activity android:name="com.example.ifanrFeed.NewsActivity" android:label="@string/app_name" >
  2. </activity>

TextView显示Html格式信息

  1. setContentView(R.layout.activity_news);
  2. final News news = (News) getIntent().getExtras().getSerializable("news");
  3. Log.i("MainActivity",news.toString());
  4.  
  5. title = (TextView) this.findViewById(R.id.NewsTitle);
  6. titleImage = (ImageView) this.findViewById(R.id.TitleImage);
  7. content = (TextView) this.findViewById(R.id.NewsContent);
  8.  
  9. title.setText(news.getTitle());
  10. Picasso.with(getApplicationContext()).load(news.getImage())
  11. .into(titleImage);
  12.  
  13. Spanned newsSpan = Html.fromHtml(news.getContent());
  14. // content.setText(newsSpan);
  15. content.setMovementMethod(LinkMovementMethod.getInstance());

这种情况下只支持Html中文字信息,所有图片信息都是一个小方块儿,需要点击才能转到浏览器加载,很影响体验!


TextView异步显示Html中的图片

主要是运用Html.fromHtml 通过设置ImageGetter 获取html 中img 标签图片信息。

  1. static Spanned fromHtml(String source,Html.ImageGetter imageGetter,Html.TagHandler tagHandler)
  1. package com.example.ifanrFeed;
  2.  
  3. import java.io.IOException;
  4. import java.net.MalformedURLException;
  5. import java.net.URL;
  6.  
  7. import android.app.Activity;
  8. import android.graphics.drawable.Drawable;
  9. import android.os.Bundle;
  10. import android.os.Handler;
  11. import android.os.Message;
  12. import android.text.Html;
  13. import android.text.Html.ImageGetter;
  14. import android.text.Spanned;
  15. import android.text.method.LinkMovementMethod;
  16. import android.util.Log;
  17. import android.widget.ImageView;
  18. import android.widget.TextView;
  19.  
  20. import com.example.ifanrFeed.model.News;
  21. import com.squareup.picasso.Picasso;
  22.  
  23. public class NewsActivity extends Activity {
  24. private TextView title;
  25. private ImageView titleImage;
  26. private TextView content;
  27. private Handler handler;
  28.  
  29. @Override
  30. protected void onCreate(Bundle savedInstanceState) {
  31. // TODO Auto-generated method stub
  32. super.onCreate(savedInstanceState);
  33. setContentView(R.layout.activity_news);
  34. final News news = (News) getIntent().getExtras()
  35. .getSerializable("news");
  36. Log.i("MainActivity",news.toString());
  37.  
  38. title = (TextView) this.findViewById(R.id.NewsTitle);
  39. titleImage = (ImageView) this.findViewById(R.id.TitleImage);
  40. content = (TextView) this.findViewById(R.id.NewsContent);
  41.  
  42. title.setText(news.getTitle());
  43. Picasso.with(getApplicationContext()).load(news.getImage())
  44. .into(titleImage);
  45.  
  46. Spanned newsSpan = Html.fromHtml(news.getContent());
  47. // content.setText(newsSpan);
  48. content.setMovementMethod(LinkMovementMethod.getInstance());
  49.  
  50. handler = new Handler() {
  51. @Override
  52. public void handleMessage(Message msg) {
  53. // TODO Auto-generated method stub
  54. if (msg.what == 0x101) {
  55.  
  56. content.setText((CharSequence) msg.obj);
  57. }
  58. super.handleMessage(msg);
  59. }
  60. };
  61.  
  62. // 因为从网上下载图片是耗时操作 所以要开启新线程
  63. Thread t = new Thread(new Runnable() {
  64. Message msg = Message.obtain();
  65.  
  66. @Override
  67. public void run() {
  68.  
  69. /** * 要实现图片显示需要使用Html.fromHtml的一个重构方法:public static Spanned * fromHtml (String source,Html.ImageGetterimageGetter,* Html.TagHandler * tagHandler)其中Html.ImageGetter是一个接口,我们要实现此接口,在它的getDrawable * (String source)方法中返回图片的Drawable对象才可以。 */
  70. ImageGetter imageGetter = new ImageGetter() {
  71. @Override
  72. public Drawable getDrawable(String source) {
  73. // TODO Auto-generated method stub
  74. URL url;
  75. Drawable drawable = null;
  76. try {
  77. url = new URL(source);
  78. drawable = Drawable.createFromStream(
  79. url.openStream(),null);
  80. drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());
  81. } catch (MalformedURLException e) {
  82. // TODO Auto-generated catch block
  83. e.printStackTrace();
  84. } catch (IOException e) {
  85. // TODO Auto-generated catch block
  86. e.printStackTrace();
  87. }
  88. return drawable;
  89. }
  90. };
  91. CharSequence test = Html.fromHtml(news.getContent(),imageGetter,null);
  92. msg.what = 0x101;
  93. msg.obj = test;
  94. handler.sendMessage(msg);
  95. }
  96. });
  97. t.start();
  98.  
  99. }
  100.  
  101. @Override
  102. protected void onStart() {
  103. // TODO Auto-generated method stub
  104. super.onStart();
  105. }
  106.  
  107. @Override
  108. protected void onRestart() {
  109. // TODO Auto-generated method stub
  110. super.onRestart();
  111. }
  112.  
  113. @Override
  114. protected void onResume() {
  115. // TODO Auto-generated method stub
  116. super.onResume();
  117. }
  118.  
  119. @Override
  120. protected void onPause() {
  121. // TODO Auto-generated method stub
  122. super.onPause();
  123. }
  124.  
  125. @Override
  126. protected void onDestroy() {
  127. // TODO Auto-generated method stub
  128. super.onDestroy();
  129. }
  130. }

News展示页面



MainActivity.java

  1. package com.example.ifanrFeed;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7.  
  8. import org.xmlpull.v1.XmlPullParser;
  9. import org.xmlpull.v1.XmlPullParserException;
  10. import org.xmlpull.v1.XmlPullParserFactory;
  11.  
  12. import android.app.Activity;
  13. import android.content.Intent;
  14. import android.os.AsyncTask;
  15. import android.os.Bundle;
  16. import android.util.Log;
  17. import android.view.LayoutInflater;
  18. import android.view.Menu;
  19. import android.view.MenuItem;
  20. import android.view.View;
  21. import android.view.ViewGroup;
  22. import android.widget.AdapterView;
  23. import android.widget.BaseAdapter;
  24. import android.widget.ImageView;
  25. import android.widget.ListAdapter;
  26. import android.widget.ListView;
  27. import android.widget.TextView;
  28.  
  29. import com.example.ifanrFeed.model.News;
  30. import com.example.ifanrFeed.service.HttpUtils;
  31. import com.example.ifanrFeed.service.RSSService.RSSList;
  32. import com.squareup.picasso.Picasso;
  33.  
  34. public class MainActivity extends Activity implements RSSList {
  35. public static final String URL = "http://www.ifanr.com/Feed";
  36. private List<News> list;
  37. private ListAdapter adapter;
  38. private ListView listView;
  39.  
  40. @Override
  41. protected void onCreate(Bundle savedInstanceState) {
  42. super.onCreate(savedInstanceState);
  43. setContentView(R.layout.activity_main);
  44.  
  45. listView = (ListView) this.findViewById(R.id.listView1);
  46.  
  47. /* * RSSService service = new RSSService(getApplicationContext(),this); * // 监听事件,多线程,此处result还为null service.getRSSInfo(URL); */
  48. /* * 没吊用,错误的示范 String result=service.getResult(); Log.i("MainActivity",* "00000000000000------>"+result); */
  49. // Toast.makeText(this,result.subSequence(0,10),
  50. // Toast.LENGTH_SHORT).show();
  51. parseTask.execute("kanbujian");
  52.  
  53. listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  54.  
  55. @Override
  56. public void onItemClick(AdapterView<?> parent,long id) {
  57. News news=list.get(position);
  58. Bundle bundle=new Bundle();
  59. bundle.putSerializable("news",NewsActivity.class);
  60. intent.putExtras(bundle);
  61. startActivity(intent);
  62.  
  63. }
  64. });
  65. }
  66.  
  67. AsyncTask<String,List<News>>() {
  68.  
  69. @Override
  70. protected List<News> doInBackground(String... arg0) {
  71. String RSSInfo = arg0[0];
  72. News news = null;
  73. InputStream is = HttpUtils.getXml(URL);
  74. Log.i("MainActivity","------> " + "得到RSS item");
  75. list.add(news);
  76. news = null;
  77.  
  78. }
  79.  
  80. break;
  81.  
  82. }
  83. // 每次switch选择后跳转到下一标签,事件类型
  84. eventType = parser.next();
  85. }
  86.  
  87. } catch (XmlPullParserException e) {
  88. // TODO Auto-generated catch block
  89. System.out.println("nikan 出错了吧");
  90. e.printStackTrace();
  91. } catch (IOException e) {
  92. e.printStackTrace();
  93. }
  94.  
  95. return list;
  96.  
  97. }
  98.  
  99. @Override
  100. protected void onPreExecute() {
  101. // TODO Auto-generated method stub
  102. super.onPreExecute();
  103. }
  104.  
  105. @Override
  106. protected void onPostExecute(List<News> result) {
  107. // TODO Auto-generated method stub
  108. super.onPostExecute(result);
  109. adapter = new NewsAdapter();
  110. listView.setAdapter(adapter);
  111.  
  112. }
  113. };
  114.  
  115. class NewsAdapter extends BaseAdapter {
  116.  
  117. @Override
  118. public int getCount() {
  119. // TODO Auto-generated method stub
  120. return list.size();
  121. }
  122.  
  123. @Override
  124. public Object getItem(int arg0) {
  125. // TODO Auto-generated method stub
  126. return null;
  127. }
  128.  
  129. @Override
  130. public long getItemId(int arg0) {
  131. // TODO Auto-generated method stub
  132. return 0;
  133. }
  134.  
  135. @Override
  136. public View getView(int position,mImageLoader);
  137. viewHolder.textItem.setText(news.getTitle());
  138.  
  139. return convertView;
  140. }
  141.  
  142. }
  143.  
  144. static class ViewHolder {
  145. private ImageView imageItem;
  146. private TextView textItem;
  147. }
  148.  
  149. @Override
  150. public boolean onCreateOptionsMenu(Menu menu) {
  151.  
  152. // Inflate the menu; this adds items to the action bar if it is present.
  153. getMenuInflater().inflate(R.menu.main,menu);
  154. return true;
  155. }
  156.  
  157. @Override
  158. public boolean onOptionsItemSelected(MenuItem item) {
  159. // Handle action bar item clicks here. The action bar will
  160. // automatically handle clicks on the Home/Up button,so long
  161. // as you specify a parent activity in AndroidManifest.xml.
  162. int id = item.getItemId();
  163. if (id == R.id.action_settings) {
  164. return true;
  165. }
  166. return super.onOptionsItemSelected(item);
  167. }
  168.  
  169. @Override
  170. public void setRSSInfo(String RSSInfo) {
  171. Log.i("MainActivity","000000000000003------>" + RSSInfo);
  172.  
  173. }
  174.  
  175. }

猜你在找的XML相关文章