- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试申请阅读RSS feed。我制作了应用程序,但它不会加载提要。我会给您代码,以便您可以告诉我可以更改哪些内容以使应用程序正常工作。我不知道问题是什么。代码中没有错误,但不会加载提要。
ListActivity.java:
package com.listview;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListAdapter;
import android.widget.ListView;
public class ListActivity extends Activity {
ListView lv1;
ProgressDialog ShowProgress;
public ArrayList<Post> PostList = new ArrayList<Post>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
lv1 = (ListView)findViewById(R.id.listView1);
ShowProgress = ProgressDialog.show(ListActivity.this,"","Loading. Please wait...",true);
new loadingTask().execute("av-gurus.blogspot.com/feeds/posts/default/");
lv1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent,View view,
int position, long id){
Intent intent = new Intent(Intent.ACTION_VIEW).setData(Uri
.parse(PostList.get(position).getUrl()));
startActivity(intent);
}
});
}
class loadingTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
SAXHelper sh = null;
try
{
sh = new SAXHelper(urls[0]);
}catch (MalformedURLException e){
e.printStackTrace();
}
sh.parseContent("");
return "";
}
protected void onPostExecute(String s) {
lv1.setAdapter(new EfficientAdapter(ListActivity.this, PostList));
ShowProgress.dismiss();
}
}
class SAXHelper{
public HashMap<String, String> userList = new HashMap<String, String>();
private URL url2;
public SAXHelper(String url1) throws MalformedURLException {
this.url2 = new URL(url1);
}
public RSSHandler parseContent(String parseContent) {
RSSHandler df = new RSSHandler();
try {
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
xr.setContentHandler(df);
xr.parse(new InputSource(url2.openStream()));
} catch (Exception e) {
e.printStackTrace();
}
return df;
}
}
class RSSHandler extends DefaultHandler {
private Post currentPost = new Post();
StringBuffer chars = new StringBuffer();
@Override
public void startElement(String uri, String localName, String qName,
Attributes atts) {
chars = new StringBuffer();
if (localName.equalsIgnoreCase("item")) {
}
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if (localName.equalsIgnoreCase("title")
&& currentPost.getTitle() == null) {
currentPost.setTitle(chars.toString());
}
if (localName.equalsIgnoreCase("pubDate")
&& currentPost.getPubDate() == null) {
currentPost.setPubDate(chars.toString());
}
if (localName.equalsIgnoreCase("thumbnail")
&& currentPost.getThumbnail() == null) {
currentPost.setThumbnail(chars.toString());
}
if (localName.equalsIgnoreCase("link")
&& currentPost.getUrl() == null) {
currentPost.setUrl(chars.toString());
}
if (localName.equalsIgnoreCase("item")) {
PostList.add(currentPost);
currentPost = new Post();
}
}
@Override
public void characters(char ch[], int start, int length) {
chars.append(new String(ch, start, length));
}
}
}
Post.java:
package com.listview;
public class Post {
private String title;
private String thumbnail;
private String url;
private String description;
private String pubDate;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getThumbnail() {
return thumbnail;
}
public void setThumbnail(String thumbnail) {
this.thumbnail = thumbnail;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public void setDescription(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
public void setPubDate(String pubDate) {
this.pubDate = pubDate;
}
public String getPubDate() {
return pubDate;
}
}
EfficientAdapter.java:
package com.listview;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class EfficientAdapter extends BaseAdapter {
private Activity activity;
private ArrayList<Post> data;
private static LayoutInflater inflater = null;
//public ImageLoader imageLoader;
ViewHolder holder;
EfficientAdapter(Activity a, ArrayList<Post> d) {
activity = a;
data = d;
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// imageLoader = new ImageLoader(activity.getApplicationContext());
}
@Override
public int getCount() {
return data.toArray().length;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
public static class ViewHolder {
public TextView label;
public TextView addr;
public ImageView image;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (convertView == null) {
vi = inflater.inflate(R.layout.row, null);
holder = new ViewHolder();
holder.label = (TextView) vi.findViewById(R.id.title);
holder.addr = (TextView) vi.findViewById(R.id.details);
holder.image = (ImageView) vi.findViewById(R.id.thumb);
vi.setTag(holder);
} else
holder = (ViewHolder) vi.getTag();
holder.label.setText(data.get(position).getTitle());
holder.addr.setText(data.get(position).getPubDate());
imageLoader.DisplayImage((data.get(position).getThumbnail()), activity,
holder.image, 72, 72);
URL url = null;
try {
url = new URL((data.get(position).getThumbnail()));
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
InputStream content = null;
try {
content = (InputStream)url.getContent();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Drawable d = Drawable.createFromStream(content , "src");
Bitmap mIcon1 = null;
try {
mIcon1 =
BitmapFactory.decodeStream(url.openConnection().getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
holder.image.setImageBitmap(Bitmap.createScaledBitmap(mIcon1, 72, 72, false));
return vi;
}
}
activity_list.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ListActivity" >
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollingCache="false"
android:background="#ffffff"
android:cacheColorHint="#00000000"
android:id="@+id/listView1">
</ListView>
</LinearLayout>
row.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/widget30"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:padding="4dip" xmlns:android="http://schemas.android.com/apk/res/android">
<TextView android:id="@+id/details" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="TextView"
android:textColor="#000000" android:layout_toRightOf="@+id/icon"
android:layout_alignLeft="@+id/title" android:layout_alignRight="@+id/title"
android:layout_below="@+id/title" android:layout_marginRight="5px">
</TextView>
<TextView android:id="@+id/title" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="TextView"
android:textStyle="bold" android:textColor="#000000"
android:layout_marginTop="5px" android:layout_toRightOf="@+id/icon"
android:layout_marginRight="5px">
</TextView>
<ImageView android:id="@+id/arrow" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:padding="0px"
android:layout_marginRight="10px" android:src="@drawable/ic_launcher"
android:layout_alignRight="@+id/icon" android:layout_alignParentRight="true"
android:layout_centerVertical="true">
</ImageView>
<ImageView android:id="@+id/thumb" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_marginRight="10px"
android:layout_centerVertical="true" android:layout_alignParentLeft="true"
android:src="@drawable/ic_launcher" android:minWidth="72dip"
android:minHeight="72dip" android:maxWidth="72dip" android:maxHeight="72dip">
</ImageView>
</RelativeLayout>
最佳答案
"av-gurus.blogspot.com/feeds/posts/default/"
这应该以 http
方案 (http://
) 开头
关于java - Listview RSS 阅读器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13606123/
我正在为现有网站创建 RSS,我只是想知道是否有推荐数量的提要项目显示在 RSS 提要中? 可以输出我想要的任意数量的提要吗?如果需要,一次像 50 个提要一样吗? RSS 的目的是让网站上的订阅者随
从 Windows 命令行,我希望能够发布到 RSS 提要。我想象这样的事情: rsspub @builds "Build completed without errors." 然后,有人可以访问我的
每当我在 RSS 提要中看到图像时,它们都嵌入在 CDATA 中,而不是被标签包围。 在我的提要中,我希望图像不这样做就显示出来。 无论是在浏览器中,还是在提要阅读器 (Bloglines) 中或通过
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be
RSS 项目内的描述标签是否有长度限制或最大大小? 此外,此标记是否可以容纳 HTML 标记? 我将生成 和来自同一源 HTML,还想知道 是否标签容纳 HTML。 最佳答案 据我所知,没有长度限制
我正在为我正在开发的网站创建 RSS 提要。我阅读了关于 RSS 的内容,它非常简单:它是一个特殊格式的 XML 文件。 但是,我找不到有关以下两个问题的信息 RSS 提要中的条目/项目数量是否有限制
对于我订阅的所有 RSS 源,我使用 Google Reader ,我喜欢。不过,我确实有几个特定的 RSS 提要,希望在更新后立即收到通知(例如,我希望尽快监控和响应的论坛的 RSS 提要)。
我了解如何制作 RSS 文件。它的 XML 非常简单。但是我需要什么特殊的更新才能分发,还是我只需要定期更新文件而其余的会自行处理?我在 rss 上找到的所有内容都在谈论它的作用,但并没有谈论它是如何
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 8年前关闭。 Improve this qu
是否有任何网站/服务可以让我向任何网站添加 RSS 订阅? 这是我工作的公司。我们有一个显示公司相关新闻的网站。这些新闻由外部机构提供,并自动更新到我们的数据库中。我们的网站选择随机/新消息并显示它们
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
我想知道在您的应用程序中使用其他人的 RSS 提要(例如 BBC RSS 提要)是否存在任何法律问题? 最佳答案 你真的应该问律师。但是,我在 out-law.com 上找到了这个: Using a
我们有一个提供一些 RSS 提要的站点,我们想知道有多少人订阅了每个提要,而不使用像 FeedBurner 这样的系统来为他们提供服务。 解决这个问题的原始方法基本上是记录请求,然后获取请求每个提要的
我有一个系统可以获取几百个 RSS 提要。目前,它们的刷新周期为 10 分钟,但我最好让它更快。以近实时/推送间隔获取 RSS 源的策略是什么? 我遇到的一些解决方案: 1分钟取一次;如果没有变化,则
我需要在数据库中存储来自多个 RSS 提要的新项目。我想使用每个项目的 GUID 标记来确定它是否已经存在于数据库中。 见 W3C specification : guid stands for gl
我正在构建一个在线 Rss 阅读器。我希望能够与文章标题和描述一起显示图像。 我正在使用谷歌提要 API 从 CNN ( http://rss.cnn.com/rss/edition.rss ) 读取
我订阅了许多 RSS 提要,主要来自我自己的时区(英国:目前是 GMT+1,又名 BST)。不过我也对新西兰的新闻感兴趣(目前为 GMT+12)。 我的问题是由于我沉迷于需要将未读计数保持在或接近于零
首先,为什么我问:现在 StackOverflow 上的声望点具有真正的值(value)(您可以通过提供赏金将它们花在该死的好答案上)我想监视我可能能够回答的问题并扑向它们! (此外,其他人实时回答我
我想基于我使用的Tumblr标签创建一个RSS feed。我想将的部分提交给博客联合服务。我必须向博客联合组织提供一个RSS feed。但是我不希望所有帖子都出现在那。有什么办法可以做这样的事情吗?
当我们用 rss 阅读器获取 rss 时,阅读器是标记已读/未读状态还是将此类信息发送回服务器? 阅读完一条消息后,我转向另一个 RSS 阅读器,我会收到所有标记为未读的 RSS 记录吗? 最佳答案
我是一名优秀的程序员,十分优秀!