我正按照此站点的示例构建RSS提要阅读器:
https://www.androidpit.com/java-guide-2-program-your-own-rss-reader
目前,当您点击Feed标题时,没有任何反应。我想要它做的是在浏览器中打开相应的链接,但我无法弄明白。
我试过这个:
private String readItem(XmlPullParser parser) throws XmlPullParserException, IOException {
String result = null;
parser.require(XmlPullParser.START_TAG, null, "item");
while (parser.next() != XmlPullParser.END_TAG) {
if (parser.getEventType() != XmlPullParser.START_TAG) {
continue;
}
String name = parser.getName();
if (name.equals("title")) {
result = readTitle(parser);
} else {
skip(parser);
}
}
return result;
}
// Processes link tags in the feed.
private List<String> readLink(XmlPullParser parser) throws IOException, XmlPullParserException {
ArrayList<String> link = new ArrayList<>();
parser.require(XmlPullParser.START_TAG, null, "link");
link.add(readText(parser));
parser.require(XmlPullParser.END_TAG, null, "link");
return link;
}
// Processes title tags in the feed.
private String readTitle(XmlPullParser parser) throws IOException, XmlPullParserException {
parser.require(XmlPullParser.START_TAG, null, "title");
String title = readText(parser);
parser.require(XmlPullParser.END_TAG, null, "title");
return title;
}
我最后发出一条警告,说明方法readLink从未在本地使用过。我不确定是否应该更改readItem方法,因为有一个readChannel方法需要返回的值是一个字符串。
当我使用Toast的public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id); ... }
时,我能够看到被点击的项目的位置,但是当我使用它时,应用程序崩溃了。
Uri uri = Uri.parse(link.get(position));
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
所以我的问题是:如何打开浏览器进入相应的标题链接?我是java和android开发的新手,所以请耐心等待。
P.S我已将ListView设置为可点击。
答案 0 :(得分:1)
右。我已经弄清楚了所以我想我会在这里分享它,以防万一有人在寻找同样的东西。
我必须在private ArrayList<String> links = new ArrayList<>();
类中添加PlaceholderFragment
:
public static class PlaceholderFragment extends ListFragment {
private ArrayList<String> links = new ArrayList<>();
...
}
对readItem
方法进行以下更改:
if (name.equals("title")) {
result = readTitle(parser);
} else if (name.equals("link")) {
links.add(readLink(parser));
} else {
skip(parser);
}
添加:
// Processes link tags in the feed.
private String readLink(XmlPullParser parser) throws IOException, XmlPullParserException {
parser.require(XmlPullParser.START_TAG, null, "link");
String link = readText(parser);
parser.require(XmlPullParser.END_TAG, null, "link");
return link;
}
然后添加:
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Uri uri = Uri.parse(links.get(position));
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
希望这有助于某人。